[英]How to change values within a column, based on a condition, in a DataFrame with multi-index
我当前的 DF 看起来像:
column 1 column 2 column 3
user_id date
5678 2022-01-01 0.0 1.5 0.0
6253 2022-01-14 0.0 NaN 2.0
我的 DF 有很多行,我需要根据 user_id 是否在名为“用户”的特定集合中更改第 2 列的值。
我正在使用以下代码,但它似乎不起作用。
我的代码:
for idx, row in df.iterrows():
if idx[0] in users:
row['column 2'] = 0
当我检查“用户”集中存在的特定 user_id 时,它显示为“NaN”。 这是否意味着代码无效? 如果 user_id 存在于用户集中,我需要第 2 列的所有值都为零。
先感谢您。
df.loc[df.index.get_level_values("user_id").isin(users), "column 2"] = 0
你不需要循环! 你可以
.loc
将进行设置这是我解决这个问题的方法:
for user in users:
if user in df.index.get_level_values(level='user_id'):
df['column 2'].loc[user,:] = 0
循环将检查每个用户。 如果他们在 dataframe 的索引中,它将为该用户更改第 2 列中的值。 (loc 在这里工作)
这也可能有效:
for user in users:
if user in df.index.get_level_values(0):
df['column 2'].loc[user,:] = 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.