Pandas链索引-替换键列值



我在数据框架上尝试了以下事情:

  1. 用值'job '筛选列Topic
  2. 对于这些行,检查content是否具有字符串'bb'
  3. 将结果选择的Topic值重命名为'civ'

下面是一个示例数据框架

{'topic': {0: 'job', 1: 'job', 2: 'job', 3: 'edu', 4: 'edu', 5: 'edu'},
'content': {0: 'a b cc',
1: 'a bb c',
2: 'aa bb c',
3: 'ee dd uu',
4: 'bb e d u',
5: 'e dd uu'}}

生成的数据框应该如下所示


topic | content
0   job | a b cc
1   civ | a bb c
2   civ | aa bb c
3   edu | ee dd uu
4   edu | bb e d u
5   edu | e dd uu

我试过下面的方法。但是什么也没发生。

df[df['topic']=='job'][df.content.str.contains("bb")==True]["topic"]='game'

我还尝试使用下面链接中显示的掩码。但我得到的错误在步骤df.loc[mask,'topic']说&;ValueError:不能索引多维键&;

使用DataFrame.loc&的链掩码,and:

df.loc[(df['topic']=='job') & df.content.str.contains("bb"), "topic"]='game'
print (df)
topic   content
0   job    a b cc
1  game    a bb c
2  game   aa bb c
3   edu  ee dd uu
4   edu  bb e d u
5   edu   e dd uu

试试df.loceqstr.contains:

df.loc[df['topic'].eq('job') & df['content'].str.contains('bb'), 'topic'] = 'game'

最新更新