Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用字符串对数据帧的值进行分组_Python_String_Pandas - Fatal编程技术网

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,因为这些术语作为子字符串出现,对吗?是的,但仅举个例子,我使用了子字符串比整个字符串更大的字符串作为列的元素