首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pass pass输出应用于多个列

pass pass输出应用于多个列
EN

Stack Overflow用户
提问于 2018-02-26 19:01:31
回答 1查看 38关注 0票数 1

如何将apply的输出传递给多个列?

代码语言:javascript
复制
import pandas as pd
import numpy as np

def someFunc(x, y):
    return x**2, y**2

df = pd.DataFrame(data=np.random.random(size=(5, 4)), columns=['a', 'b', 'c', 'd'])    
df.loc[:, ['c', 'd']] = np.zeros((5, 2)) # can pass array to df
df.loc[:, ['c', 'd']] = df.apply(lambda row: someFunc(row.a, row.b), axis=1) 

在上面的示例中,我可以向这两列传递一个array,但是apply的输出是一个元组的pd.series,它返回错误:

代码语言:javascript
复制
ValueError: Must have equal len keys and value when setting with an iterable
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-26 19:03:05

我觉得你需要退货Series

代码语言:javascript
复制
def someFunc(x, y):
    return pd.Series([x**2, y**2])

df = pd.DataFrame(data=np.random.random(size=(5, 4)), columns=['a', 'b', 'c', 'd'])    

df[['c', 'd']] = df.apply(lambda row: someFunc(row.a, row.b), axis=1) 
print (df)
          a         b         c         d
0  0.145095  0.164194  0.021052  0.026960
1  0.141085  0.515790  0.019905  0.266040
2  0.416814  0.364209  0.173734  0.132648
3  0.025355  0.490520  0.000643  0.240610
4  0.938705  0.690380  0.881166  0.476624
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48986947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档