Python 使用字符串对数据帧的值进行分组
下面的代码用于对单个消息进行分类Python 使用字符串对数据帧的值进行分组,python,string,pandas,Python,String,Pandas,下面的代码用于对单个消息进行分类 total_frame['dummy_message'][total_frame['Message'].str.contains(['rrc'],case = False)] = 'msg1' 但是,如果我想对消息列中的所有消息进行分类,我想使用如下内容 total_frame['dummy_message'[total_frame['Message'].str.contains(['rrc','as1','as2','a2'],case = False)]
total_frame['dummy_message'][total_frame['Message'].str.contains(['rrc'],case = False)] = 'msg1'
但是,如果我想对消息列中的所有消息进行分类,我想使用如下内容
total_frame['dummy_message'[total_frame['Message'].str.contains(['rrc','as1','as2','a2'],case = False)] = 'msg1','msg2','msg3','msg4'
index Message dummy message
0 rrc msg1
1 as1 msg2
2 as1 msg2
3 a2 msg4
4 as2 msg3
5 a2 msg4
这不起作用,因为str.contains不接受列表。
输出应该如下所示
total_frame['dummy_message'[total_frame['Message'].str.contains(['rrc','as1','as2','a2'],case = False)] = 'msg1','msg2','msg3','msg4'
index Message dummy message
0 rrc msg1
1 as1 msg2
2 as1 msg2
3 a2 msg4
4 as2 msg3
5 a2 msg4
是否有其他选择?初始化子字符串到类别的映射,然后使用提取并对其进行分类:
mapping = dict(zip(
['rrc', 'as1', 'as2', 'a2'],
['msg1', 'msg2', 'msg3', 'msg4']))
df['category'] = (
df['Message'].str.extract(r'(?i)({})'.format('|'.join(mapping)), expand=False)
.map(mapping))
如果不区分大小写很重要,请将正则表达式修改为:r'?i{}.format'|'.joinmapping
最小代码示例
你能提供一个答案吗?我想过滤功能会有帮助。没有足够的上下文。这里的假设是您使用str.contains,因为这些术语作为子字符串出现,对吗?是的,但仅举个例子,我使用了子字符串比整个字符串更大的字符串作为列的元素