我有一个pandas数据框,其中一行包含以下数据:
1 year
1 month
1 week
4 year
3 week
等等
我正在尝试将包含“month”或“week”的任何内容替换为0
train_df.age["weeks" in train_df.age] = 0
和
for i in train_df['age']:
if "weeks" in i:
i = "0"
这些似乎都不起作用。
关于如何做到这一点的任何建议? 感谢。
答案 0 :(得分:1)
使用str.contains
:
train_df.loc[train_df['age'].str.contains(r'week|month'), 'age'] = 0
在这里,我们传递一个正则表达式模式,该模式查找该行是否包含“周”和“周”。或者'月'并使用布尔掩码有选择地仅更新感兴趣的行:
In [4]:
df.loc[df['age'].str.contains(r'week|month'), 'age'] = 0
df
Out[4]:
age
1 year
1 0
1 0
4 year
3 0