[英]Updating a column in a Pandas DataFrame based on a condition of another column
[英]pandas - updating a dataframe column with value of another column with if condition
我想更新 ColumnA,如果它在 ColumnC 中有“0”和字符串“pandas”,并且具有平均值 [我存储在 columnB 中]
df['ColumnA'] = df.apply(lambda x: x['ColumnB'] if (x['ColumnA']==0 & x['ColumnC']=='pandas') else x['ColumnA'], axis=1)
我收到此错误
unsupported operand type(s) for &: 'int' and 'str'
请告诉我如何修复它
在您的条件周围加上括号,并在评论中指出,使用 and 代替 & 进行标量比较,例如
((x['ColumnA'] == 0) and (x['ColumnC'] == 'pandas'))
请参阅有关操作顺序的问题- 按位运算符&
优先于布尔运算符==
也就是说,您应该考虑使用矢量化操作:
df['ColumnA'] = df['ColumnB'].where(
((df['ColumnA'] == 0) & (df['ColumnC'] == 'pandas')),
df['ColumnA'],
)
在几乎所有情况下,这都比 df.apply 快。
使用and
代替&
并且还在==
测试周围放置括号:
df['ColumnA'] = df.apply(lambda x: x['ColumnB'] if (x['ColumnA']==0) and (x['ColumnC']=='pandas') else x['ColumnA'], axis=1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.