python - 从 pandas df 列中提取分号分隔值
问题描述
我需要从 pandas df 列中提取特定值。数据如下所示:
row my_column
1 artid=delish.recipe.45064;artid=delish_recipe_45064;avb=83.3;role=4;data=list;prf=i
2 ab=px_d_1200;ab=2;ab=t_d_o_1000;artid=delish.recipe.23;artid=delish;role=1;pdf=true
3 dat=_o_1000;artid=delish.recipe.23;ar;role=56;passing=true;points001
数据不一致,但用逗号分隔,我需要提取role=x
. 我用分号分隔数据。并且可以通过值循环来获取角色,但想知道是否有更优雅的方法来解决它。期望的输出:
row my_column
1 role=4
2 role=1
3 role=56
谢谢你。
解决方案
这应该有效:
def get_role(x):
l=x.split(sep=';')
t=[i for i in l if i[:4]=='role')][0]
return t
df['my_column']=[i for i in map(lambda y: get_role(y), df['my_column'])]
推荐阅读
- mysql - 如何使用 SQL 进行归因
- c# - 如何将listview项绑定绑定到页面的Viewmodel?
- java - 使用 Rest Assured 的 HTTP POST 请求(示例)
- excel - 通过 Excel VBA 和 ADODB 连接将 Access 查询拉入 Excel
- c++ - 如何正确链接子目录中的静态库?
- python - vscode python调试器不对断点或stoponentry做出反应
- c++ - “标识符未定义”,试图从私有结构创建一个函数
- django - Django 将图像从 URL 保存到模型导致 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
- if-statement - SAS 错误:SUM 的空参数无效
- python - 使用 Python 通过目录中的多个 .csv 文件循环函数