将函数返回的列表展开为多列(Pandas)
问题描述:
我有一个函数,我试图调用数据框的每一行,我希望它返回20个不同的数值,并且每个数值都在原始数据框的单独列。将函数返回的列表展开为多列(Pandas)
例如,这是没有的功能,但如果这会工作的实际人会
def doStuff(x):
return([x] * 5)
因此,这将只返回相同数量的5倍。所以,如果我有数据帧
import pandas as pd
df = pd.DataFrame({'A' : [1,2]})
A
0 1
1 2
2 3
调用
df = np.vectorize(doStuff)(df['A'])
后它应该结束了看起来像
A 1 2 3 4 5
0 1 1 1 1 1 1
1 2 2 2 2 2 2
2 3 3 3 3 3 3
答
我相信你需要df.apply
,两次。
In [1254]: df['A'].apply(np.vectorize(doStuff)).apply(pd.Series)
Out[1254]:
0 1 2 3 4
0 1 1 1 1 1
1 2 2 2 2 2
2 3 3 3 3 3
您可能会与原来的使用pd.concat(..., axis=1)
串连这样的:
In [1258]: pd.concat([df, df['A'].apply(np.vectorize(doStuff)).apply(pd.Series)], axis=1)
Out[1258]:
A 0 1 2 3 4
0 1 1 1 1 1 1
1 2 2 2 2 2 2
2 3 3 3 3 3 3
@COLDSPEED非常感谢。这工作完美 – Kristofersen