有点泡菜。我正在尝试通过搜索特定的字符串值来查找数据帧中的一行,然后将字符串值替换为零。我正在使用以下代码:
selectRow = df[df.iloc[:,0].str.match(ID)]
selectRow.replace(ID, 0)
其中 ID 是某个字符串。 这将按预期返回数据帧中的一行。 但是,我似乎无法修改数据帧中selectRow的值,因为此时 selectRow是一个单独的数据帧。
我知道我错过了一些非常基本的东西。 任何帮助将不胜感激!
快递 之 家
您可以在一行中执行此操作,如下所示:
方法-1:
ID = `eee`
df.iloc[:,0].loc[df.iloc[:,0]==ID] = 0
输出:
C1 C2
0 aaa bbb
1 ccc ddd
2 0 fff
3 ggg eee hhh
方法-2:
使用pandas.Dataframe.replace
方法。
df.iloc[:,0].replace(to_replace=ID, value=0, regex=False)
输出:
C1 C2
0 aaa bbb
1 ccc ddd
2 0 fff
3 ggg eee hhh
如果设置regex=True
,则还可以根据ID
的其他匹配项调整行。输出:
C1 C2
0 aaa bbb
1 ccc ddd
2 0 fff
3 0 hhh
虚拟数据
df = pd.DataFrame([['aaa','bbb'],['ccc','ddd'],['eee','fff'],['ggg eee','hhh']], columns=['C1','C2'])
print(df)
输出:
C1 C2
0 aaa bbb
1 ccc ddd
2 eee fff
3 ggg eee hhh
测试数据:
import pandas as pd
df = pd.DataFrame([['aaa','bbb'],['ccc','ddd'],['eee','fff'],['ggg','hhh']])
DF是:
Out[42]:
0 1
0 aaa bbb
1 ccc ddd
2 eee fff
3 ggg hhh
法典:
Template = 'eee'
df[0] = [(lambda x: 0 if (x == Template) else x)(x) for x in df[0]]
结果是:
Out[45]:
0 1
0 aaa bbb
1 ccc ddd
2 0 fff
3 ggg hhh
有帮助吗?