我在数据框架上尝试了以下事情:
- 用值'job '筛选列
Topic
- 对于这些行,检查
content
是否具有字符串'bb' - 将结果选择的
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.loc
与eq
和str.contains
:
df.loc[df['topic'].eq('job') & df['content'].str.contains('bb'), 'topic'] = 'game'