繁体   English   中英

使用 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM