簡體   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