熊猫:按字符串搜索数据框,然后修改[无标题]

时间:2019-10-14 18:06:15

标签: python pandas dataframe

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

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

selectRow.replace(ID, 0)

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

我知道我缺少一些难以置信的基本知识。 任何帮助将不胜感激!

CN

2 个答案:

答案 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)

您可以按如下所示在一行中完成此操作:

方法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