[英]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.