python - 解析数据框中的多个字典列以分隔列
问题描述
我有一个 pandas 数据框,它有一列包含多个字典值。
我使用 pd.series 将这些 dict 展平为单独的列。现在一列被分成 14 列。但它仍然在 14 列的每一行中都有字典值。
以 A、B、C.. 的方式具有 14 列的样本数据:
index A B C
0 {'field_name': 'Supplier Name', {'field_name': 'BG', 'user_value': None, {'field_name': 'VATNumber', 'user_value': None,
'user_value': None, 'value' : 'ABCD'} 'value': '764065'} 'value': 'SE1234556'}
如何进一步将它们提取为单独的列,如下所示:
field_name user_value value
Supplier Name None ABCD
BG None 764065
VATNumber None SE1234556
代码:
df = pd.DataFrame(data) #data is a list of 'values'
df1 = df['values'].apply(pd.Series)
#naming the multiple columns as A, B..
column_names = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O']
df1 = pd.DataFrame(df1.values, columns = column_names)
解决方案
您可以使用 json_normalize 将字典规范化为列
from pandas.io.json import json_normalize
pd.concat([json_normalize(df[c]) for c in df])
field_name user_value value
0 Supplier Name None ABCD
0 BG None 764065
0 VATNumber None SE1234556
推荐阅读
- r - R:当观察数不能被箱数整除时,按一个因子创建箱?
- ios - Swift:在没有文本时以编程方式使用 numberOfLines 展开 UILabel
- vim - 如何在不提示“将更改保存到无标题?”的情况下关闭 gvim?
- windows - 具有本机反应的 Windows 应用程序
- python-3.x - 尝试使用 Python 和 psycopg2 创建 Redshift 表,但未创建表且未报告错误
- php - 我正在尝试跳过结帐页面中的付款地址
- julia - 使用 map 将 Int32 类型的新列添加到 julia 数据框
- python-3.x - Python Selenium 如何定位和填写这 3 个输入
- python - 带参数的 Python/Flask 嵌套装饰器
- python - TypeError: if 语句中 -: 'str' 和 'int' 的不支持的操作数类型