1
データフレームはいくつかの値を列に格納し、それらの値を関数に渡して別のデータフレームを取得します。返されたデータフレームの列を元のデータフレームに連結したいと思います。pandasデータフレームとlambdaが別のデータフレームを返す場合の適用結果(lambda)
私は
i = pd.concat([i, i[['cid', 'id']].apply(lambda x: xy(*x), axis=1)], axis=1)
ような何かをしようとしたが、それは誤りでは動作しませんでした:
ValueError: cannot copy sequence with size 2 to array axis with dimension 1
だから私はこのように行った:
def xy(x, y):
return pd.DataFrame({'x': [x*2], 'y': [y*2]})
df1 = pd.DataFrame({'cid': [4, 4], 'id': [6, 10]})
print('df1:\n{}'.format(df1))
df2 = pd.DataFrame()
for _, row in df1.iterrows():
nr = xy(row['cid'], row['id'])
nr['cid'] = row['cid']
nr['id'] = row['id']
df2 = df2.append(nr, ignore_index=True)
print('df2:\n{}'.format(df2))
が出力:
df1:
cid id
0 4 6
1 4 10
df2:
x y cid id
0 8 12 4 6
1 8 20 4 10
コードがうまく見えず、ゆっくりと動作するはずです。
正常に動作するようにパンダ/ピジョンの方法がありますか?
のpython 2.7
df1.assign(** df1.apply(lambda x:...)は必要に応じて機能します。ありがとうございました! – user3657041