![](/img/trans.png)
[英]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.