gpt4 book ai didi

python - 将 Python 函数应用于多个 Pandas 列

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:30 24 4
gpt4 key购买 nike

我正在尝试编写一个函数并将其应用于 pandas 数据框中的多个字段。该函数获取列 colA1,并根据条件语句为新列 colB2 赋值。如果给出单列,则此函数有效,例如colA1,但是我怎么能写它来遍历一个列列表,返回相应数量的新列?

以下函数适用于单个列:

dict = {'colA1':[2,6,8,28,5], 
'colA2': [38,6,14,63,3],
'colA3':[90,40,80,98,3]}

df = pd.DataFrame(dict)

def function(x):
if x <= 10:
return '<= 10'
elif x > 10:
return '> 10'

df['colB1']=df['colA1'].apply(function)

df['colB1']

返回:

0    <= 10
1 <= 10
2 <= 10
3 > 10
4 <= 10

我试图将它应用于多个列,如下所示: Update Multiple Columns using Pandas Apply Function

df[['colB1', 'colB2', 'colB3']]=df[['colA1', 'colA2', 'colA3']].apply(function)

但这会返回:ValueError: ('Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。', '发生在索引 colA1' )

最佳答案

如果这确实是您想要做的,更快的选择是 np.select() :

cond=[df<= 10,df > 10]
choice=['<= 10','> 10' ]
df[:]=np.select(cond,choice)
print(df)

   colA1  colA2  colA3
0 <= 10 > 10 > 10
1 <= 10 <= 10 > 10
2 <= 10 > 10 > 10
3 > 10 > 10 > 10
4 <= 10 <= 10 <= 10

您也可以尝试使用 df.applymap()为您的功能:

df[['colA1','colA2','colA3']].applymap(function)
#df.applymap(function)

   colA1  colA2  colA3
0 <= 10 > 10 > 10
1 <= 10 <= 10 > 10
2 <= 10 > 10 > 10
3 > 10 > 10 > 10
4 <= 10 <= 10 <= 10

关于python - 将 Python 函数应用于多个 Pandas 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56595682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com