[英]Remove values from columns if a column contains specific string in Python
[英]Remove values from specific columns with a condition in Python
如果“on status”列包含字符串“new”,我想删除 value1、value2、value3 和 value4 列中的值
数据
id date location on status value1 value2 value3 value 4
CC 1/1/2022 ny new 12 1 0 1
CC 4/1/2022 ny new 1 1 8 9
CC 7/1/2022 ny new 1 1 1 0
CC 10/1/2022 ny new 1 2 2 1
CC 1/1/2023 ny ok 1 2 2 1
期望的
id date location on status value1 value2 value3 value4
CC 1/1/2022 ny new
CC 4/1/2022 ny new
CC 7/1/2022 ny new
CC 10/1/2022 ny new
CC 1/1/2023 ny ok 1 2 2 1
这仅适用于前 2 列,但它实际上添加了两个额外的列(value3 和 value4,并从所有行中删除数据,而不仅仅是有条件的“新”)任何建议表示赞赏
正在做
df.loc[(df['on status'] == 'new'), ['value1', 'value2','value3', 'value4']]= ''
样本输入
df = pd.DataFrame({
"on_status" : ["new", "new", "new", "new", "ok"],
"value1" : [x for x in range(5)],
"value2" : [x for x in range(5)],
"value3" : [x for x in range(5)],
"value4" : [x for x in range(5)],
})
使用 loc 对我有用
df.loc[(df.on_status == "new"), ["value1", "value2", "value3", "value4"]] = ''
样品 output
on_status value1 value2 value3 value4
0 new
1 new
2 new
3 new
4 ok 4 4 4 4
df.loc[(df['status'].str.strip() == 'new'), ['value1', 'value2','value3', 'value4']]= ''
如Naveed所述尝试此操作,如果周围有空格,则它将通过去除空格进行检查。
for i in range(len(df.index)):
if df.loc[i,'on status'] == 'new':
df.loc[i,'value1': 'value 4'] = ' '
df
这是一种方法
df.loc[(df['on status'] == 'new'), ['value1', 'value2','value3', 'value4']] = ''
或者
df.loc[(df['on status'].str.strip() == 'new'), ['value1', 'value2','value3', 'value4']] = ''
df
id date location on status value1 value2 value3 value4
0 CC 1/1/2022 ny new
1 CC 4/1/2022 ny new
2 CC 7/1/2022 ny new
3 CC 10/1/2022 ny new
4 CC 1/1/2023 ny ok 1 2 2 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.