【发布时间】:2021-04-19 10:31:57
【问题描述】:
我的 DF 看起来有多个分隔符 ( , = ) 以及 int 和 str 的组合。
DF 类型是对象(不转换为字符串)
一列单元格中的信息包含此信息
Network=115,MEID=115,Function=115,Area=1806
我想使用分隔符“=”拆分它以获取区域信息。有没有办法做到这一点
【问题讨论】:
我的 DF 看起来有多个分隔符 ( , = ) 以及 int 和 str 的组合。
DF 类型是对象(不转换为字符串)
一列单元格中的信息包含此信息
Network=115,MEID=115,Function=115,Area=1806
我想使用分隔符“=”拆分它以获取区域信息。有没有办法做到这一点
【问题讨论】:
为了通用Area=xxxx可以在单元格中的任何位置,我们可以将str.extract()与regex(正则表达式)一起使用,如下所示:
df['Area'] = df['Col1'].str.extract(r'Area=(?P<Area>[^,=]*)')
测试数据构建:
data = {'Col1': ['Network=115,MEID=115,Function=115,Area=1806', 'Network=120,MEID=116,Area=1820,Function=116']}
df = pd.DataFrame(data)
print(df)
Col1
0 Network=115,MEID=115,Function=115,Area=1806
1 Network=120,MEID=116,Area=1820,Function=116
运行新代码
df['Area'] = df['Col1'].str.extract(r'Area=(?P<Area>[^,=]*)')
print(df)
Col1 Area
0 Network=115,MEID=115,Function=115,Area=1806 1806
1 Network=120,MEID=116,Area=1820,Function=116 1820
正则表达式解释:
Area= 匹配参数Area= 字面意思
(?P<Area> 将正则表达式捕获组命名为Area
[^,=]* 0 次或多次出现的字符类[^,=] 匹配不等于, 或= 的字符
) 命名捕获组结束
【讨论】: