1. ホーム
  2. python

[解決済み] Pandas: 既存の列から計算された値でデータフレームに新しい列を2つ作成する

2022-11-18 14:58:38

質問

私は パンダ ライブラリを使用しており、データフレームに2つの新しいカラムを追加したいのです。 df に2つの新しい列を追加したいのですが、n列(n > 0)のデータフレームになります。

これらの新しい列は、データフレーム内の列の 1 つに関数が適用された結果です。

適用する関数は、次のようなものです。

def calculate(x):
    ...operate...
    return z, y

値のみを返す関数に対して新しいカラムを作成する方法の1つは、以下の通りです。

df['new_col']) = df['column_A'].map(a_function)

ということで、私が欲しくて、失敗して試したのは(*)、以下のようなものです。

(df['new_col_zetas'], df['new_col_ys']) = df['column_A'].map(calculate)

これを達成するための最良の方法は何でしょうか?私は ドキュメント を読みましたが、手がかりはありませんでした。

** df['column_A'].map(calculate) はパンダシリーズを返します。各項目はタプルz, yから構成されます。これを2つのデータフレーム列に代入しようとするとValueError.*が発生します。

どのように解決するのでしょうか?

私なら zip :

In [1]: from pandas import *

In [2]: def calculate(x):
   ...:     return x*2, x*3
   ...: 

In [3]: df = DataFrame({'a': [1,2,3], 'b': [2,3,4]})

In [4]: df
Out[4]: 
   a  b
0  1  2
1  2  3
2  3  4

In [5]: df["A1"], df["A2"] = zip(*df["a"].map(calculate))

In [6]: df
Out[6]: 
   a  b  A1  A2
0  1  2   2   3
1  2  3   4   6
2  3  4   6   9