1 回答
TA贡献1834条经验 获得超8个赞
您错误地分配了df.apply带有可选参数的结果result_type='expand',而是使用:
df[['A', 'B', 'C', 'D']] = df.apply(lambda x: foo(x.year, x.month), axis=1, result_type="expand")
考虑证明这一点的例子,
df = pd.DataFrame({'col1': np.arange(5), 'col2': np.arange(5) * 2})
#print(df)
col1 col2
0 0 0
1 1 2
2 2 4
3 3 6
4 4 8
重现问题情况,
df['A'], df['B'] = df.apply(lambda s: (s['col1']**2, s['col2']**2), axis=1, result_type='expand')
#print(df)
col1 col2 A B
0 0 0 0 1
1 1 2 0 1
2 2 4 0 1
3 3 6 0 1
4 4 8 0 1
解决方案是,
df[['A', 'B']] = df.apply(lambda s: (s['col1']**2, s['col2']**2), axis=1, result_type='expand')
#print(df)
col1 col2 A B
0 0 0 0 0
1 1 2 1 4
2 2 4 4 16
3 3 6 9 36
4 4 8 16 64
要么:
df['A'], df['B'] = df.apply(
lambda s: (s['col1']**2, s['col2']**2), axis=1, result_type='expand').T.to_numpy()
#print(df)
col1 col2 A B
0 0 0 0 0
1 1 2 1 4
2 2 4 4 16
3 3 6 9 36
4 4 8 16 64
添加回答
举报