熊猫:逐行搜索数据帧,然后修改[无标题]



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

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

有帮助吗?

最新更新