我正在尝试编写一个函数的结果,该函数将多个参数返回到多个 Pandas 列。
最初,我使用了 zip(*df.apply(..) ),但这感觉非常“hacky”且非Pythonic。
我发现 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 列的正确且 Python 的方法是什么?