我正在尝试编写将多个参数返回到多个Pandas列的函数的结果。
最初,我使用zip(* df.apply(..)),但是感觉非常“ hacky”且不具备Python风格。
我发现df.apply()有一个参数result_type ='expand',它似乎可以满足我的要求:返回多列。
但是,将结果扩展到列时,我会收到非常奇怪的结果(请参见代码)。
df['A'] = range(4)
def square(row):
return row['A']**2, row['A']**3
df.apply(square, axis=1, result_type='expand')
>>>
0 1
0 0 0
1 1 1
2 4 8
3 9 27
df['B'], df['C'] = df.apply(square, axis=1, result_type='expand')
df
>>>
A B C
0 0 0 1
1 1 0 1
2 2 0 1
3 3 0 1
我希望DF ['B']和DF ['C']包含具有正确值的返回列0和1,但它们包含0系列和1系列。
将apply函数的结果写入多个DataFrame列的正确和Pythonic方法是什么?
答案 0 :(得分:1)
尝试在创建2个新列时分配展开,例如:
../
df[['B','C']]=df.apply(square, axis=1, result_type='expand')
print(df)