Pandas创建一个框架,其条目是应用于其他DataFrame的相应条目的函数的值
我有树框架,让我们说:
ID A B | ID A B | ID A B
john * 1 | john # 2 | john @ 3
paul 1 1 | paul 2 2 | paul 3 3
jones 1 1 | jones 2 2 | jones 3 3
我必须创建一个新的数据帧,其中每个条目都是一个函数的结果,该函数的参数是三个帧的相应条目
ID A B
john f(*,#,@) f(1,2,3)
...
我是熊猫的新手,我知道如何做的唯一方法是将帧转换为numpy数组并像处理三个矩阵一样处理它们,但我更愿意以熊猫的方式解决这个问题。
我已经尝试在 SO 上寻找其他问题,但找不到任何东西,这可能是由于我如何制定我的问题。
回答
不太确定你在做什么,但这里有一些东西:
# Define dummy function (f)
def f(x):
# you can use here x.name, x.A, x.B
# >>> x.name
# 'paul'
# >>> x.A
# ['1', '2', '3']
# >>> X.B
# [1, 2, 3]
return x
>>> df1
ID A B
0 john * 1
1 paul 1 1
2 jones 1 1
>>> df2
ID A B
0 john # 2
1 paul 2 2
2 jones 2 2
>>> df3
ID A B
0 john @ 3
1 paul 3 3
2 jones 3 3
>>> pd.concat([df1,df2,df3]).groupby('ID').agg(list).apply(f, axis=1)
A B
ID
john [*, #, @] [1, 2, 3]
jones [1, 2, 3] [1, 2, 3]
paul [1, 2, 3] [1, 2, 3]
THE END
二维码