首页 > 解决方案 > 在熊猫中拆分对象 dtype 列

问题描述

我的 DF 看起来像有多个分隔符 ( , = ) 以及 int 和 str 的组合。

DF 类型是对象(不转换为字符串)

列单元格中的信息包含此信息

Network=115,MEID=115,Function=115,Area=1806

我想使用分隔符“=”拆分它以获取区域信息。有没有办法做到这一点

标签: pythonpandas

解决方案


为了通用,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 次或多次出现[^,=]与不等于,或的字符匹配的字符类=

) 命名捕获组结束


推荐阅读