【发布时间】:2019-04-13 16:27:12
【问题描述】:
我正在尝试编写一个函数的结果,该函数将多个参数返回到多个 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。
将应用函数的结果写入多个 DataFrame 列的正确和 Pythonic 方式是什么?
【问题讨论】:
-
你能把原来的df也发一下吗?
-
df 是一个空数据框:
import pandas as pd df = pd.DataFrame()