python - 如何从一个单元格中获取一个或多个值并使用 pandas 转储单元格的其余部分
问题描述
在这个电影数据库中,有一个叫做口语的列。列中的数据如下所示
[{“iso_639_1”: “cn”, “name”: “\u5e7f\u5dde\u8bdd / \u5ee3\u5dde\u8a71”},
{“iso_639_1”: “ja”, “name”: “\u65e5\u672c\u8a9e”},
{“iso_639_1”: “zh”, “name”: “\u666e\u901a\u8bdd”}
]
我需要提取语言代码,因此我正在考虑使用字符串拆分函数来提取此特定行 '“iso_639_1”:' 之后引号之间的代码,并使用它来清理数据。
解决方案
如果字典项是字符串表示,您可以先通过 apply 将它们再次转换为字典,然后您可以通过获取密钥ast.literal_eval
来简单地提取语言代码:iso_639_1
import ast
import pandas as pd
d = ['{"iso_639_1": "cn", "name": "\u5e7f\u5dde\u8bdd / \u5ee3\u5dde\u8a71"}',
'{"iso_639_1": "ja", "name": "\u65e5\u672c\u8a9e"}',
'{"iso_639_1": "zh", "name": "\u666e\u901a\u8bdd"}'
]
df = pd.DataFrame(d, columns=['a'])
df['a'] = df['a'].apply(ast.literal_eval) #not needed if the values already exist as dicts in your df
df['lang'] = df['a'].apply(lambda x:x['iso_639_1'])
输出:
一个 | 郎 | |
---|---|---|
0 | {'iso_639_1': 'cn', 'name': '广州话/广州话'} | cn |
1 | {'iso_639_1': 'ja', 'name': '日本语'} | 雅 |
2 | {'iso_639_1': 'zh', 'name': '普通话'} | zh |
推荐阅读
- node.js - 从 nodejs mongodb 传递变量以在其他 js 文件中进行计算,然后将该值导出到相同的 app.js
- python - 在 pymnet 中修改多层网络图
- android - 如何制作我的布局(位于选项卡线性布局内,占据整个屏幕?
- scala - 如何测量Scala中每个循环步骤的执行时间?
- syslog-ng - 重写日志数据
- javascript - ReCaptcha v3 未在 IE 11 中提供响应令牌对象
- elasticsearch - 如何将弹性查询聚合过滤器转换为.Net核心中的嵌套查询
- terraform - 需要对 Terraform 资源进行多次计数?
- java - 如何在javaFM中按下按钮后进行按钮默认设置
- jenkins - 如何阻止父作业,直到两个下游作业都完成