有点泡菜。我试图通过搜索特定的字符串值在数据框中找到一行,然后将该字符串值替换为零。我正在使用以下代码:
selectRow = df[df.iloc[:,0].str.match(ID)]
selectRow.replace(ID, 0)
其中ID是一些字符串。 这将按预期在数据框中返回一行。 但是,我似乎无法修改数据框中的 selectRow 的值,因为此时 selectRow 是一个单独的数据框。
我知道我缺少一些难以置信的基本知识。 任何帮助将不胜感激!
CN
答案 0 :(得分:0)
测试数据:
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
有帮助吗?
答案 1 :(得分:0)
您可以按如下所示在一行中完成此操作:
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
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