python - 在熊猫中拆分对象 dtype 列
问题描述
我的 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 次或多次出现[^,=]
与不等于,
或的字符匹配的字符类=
)
命名捕获组结束
推荐阅读
- shell - Shell 命令行参数
- c# - 有什么方法可以使用相同的编译器警告更改每一行代码?
- zapier - 在测试步骤中找不到有关从我的网站对 zapier 应用程序的可接受响应的信息(这是我网站上的“操作”)
- google-sheets - 我的 Google 表格中的数据没有出现在正确的单元格中
- amazon-web-services - Amazon Redshift 500150 设置连接时出错:连接超时:连接 - SQL Workbench/J
- python-3.x - 为什么这次我不能通过 print(['column1']) 从 DataFrame 中选择一列?
- wildfly - 从 Wildfly 10 升级到 Wildfly 14 Infinispan 问题
- java - 为什么我得到错误的 0 价值指数?
- c# - 字典有协变接口吗?
- android - gradle文件中的依赖问题