python - Pandas DataFrame - 行到列的字典
问题描述
DataFrame 的来源是一个字典列表,例如 -
ls = [{'fileName': 'file_01', 'col1': {'key1': 'value1a', 'key2': 'value1b'}}, {'fileName': 'file_02', 'col1': {'key1': 'value2a', 'key2': 'value2b', 'key3':'value2c'}}, {'fileName': 'file_03', 'col1': {'key1': 'value3a', 'key3': 'value3c'}}]
DataFrame 创建为
df = pd.DataFrame(ls, columns=['fileName', 'col1'])
Pandas DataFramedf
看起来像 -
fileName col1
file_01 {'key1':value1a, 'key2':value1b}
file_02 {'key1':value2a, 'key2':value2b, 'key3':value2c}
file_03 {'key1':value3a, 'key3':value3c}
我怎样才能把它转换成这样 -
fileName key1 key2 key3
file_01 value1a value1b
file_02 value2a value2b value2c
file_03 value3a value3c
我试过了 -
df = pd.concat([df['fileName'], pd.get_dummies(df['col1'].apply(pd.Series))], axis=1)
我在某些情况下看到了结果,例如 -
fileName key1_value1a key1_value2a key1_value3a
file_01 value1a
file_02 value2a
file_03 value3a
解决方案
In [40]: pd.concat([df['fileName'], pd.json_normalize(df['col1'])],axis=1)
Out[40]:
fileName key1 key2 key3
0 file_01 value1a value1b NaN
1 file_02 value2a value2b value2c
2 file_03 value3a NaN value3c
推荐阅读
- python - 在Python中将json字典转换为数据框
- javascript - 如何将您自己的 Javascript 添加到另一个网站
- reactjs - 在fabricjs中调整画布大小会创建另一个画布容器
- dart - 如何检查飞镖中的特定位?
- python - Plotly Dash:如何整合 SHAP 值
- python - 检索主题标签 instagram 中每个帖子的标签
- highcharts - Highchart 从上到下占用了太多空间。请帮我找出“我如何控制highchart中的间距”?
- python - 我在使用 pytube 库时得到一个(TypeError:预期的字符串或类似字节的对象)
- python - 如何解决多个数据帧之间复制期间无法对齐的索引问题
- internationalization - 翻译问题,缺少管道