首页 > 解决方案 > 熊猫:按字符串搜索数据框行然后修改[无标题]

问题描述

一点咸菜。我试图通过搜索特定的字符串值在数据框中找到一行,然后将字符串值替换为零。我正在使用以下代码:

selectRow = df[df.iloc[:,0].str.match(ID)]

selectRow.replace(ID, 0)

其中 ID 是一些字符串。这将按预期返回数据框中的一行。但是,我似乎无法修改数据框中 selectRow的值,因为此时selectRow是一个单独的数据框。

我知道我错过了一些非常基本的东西。任何帮助将非常感激!

中国

标签: pythonpandasdataframe

解决方案


您可以在一行中执行此操作,如下所示:

方法一:

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

方法二:

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

推荐阅读