如何将含数组的字典数组转换为指定格式的Pandas DataFrame
解决方法
直接按以下步骤处理即可:
- 导入pandas并将原始数据转为初始DataFrame:
import pandas as pd data = [{'dev_name': 'some_name', 'dev_connects': ['cn1', 'cn2', 'cn3', 'cn4'], 'dev_type': 'some_type', 'dev_features': ['ft 1', 'ft 2']}, {'dev_name': 'some_name2', 'dev_connects': ['cn1', 'cn2', 'cn3', 'cn4'], 'dev_type': 'some_type2', 'dev_features': ['ft 1', 'ft 2']}] df = pd.DataFrame(data)
- 拆分
dev_connects列表为单独列:
connect_cols = pd.DataFrame(df['dev_connects'].tolist(), columns=['connect1', 'connect2', 'connect3', 'connect4'])
- 拆分
dev_features列表为单独列:
feature_cols = pd.DataFrame(df['dev_features'].tolist(), columns=['feature1', 'feature2'])
- 合并所有列并调整顺序至目标格式:
final_df = pd.concat([df[['dev_name', 'dev_type']], connect_cols, feature_cols], axis=1) final_df = final_df[['dev_name', 'connect1', 'connect2', 'connect3', 'connect4', 'dev_type', 'feature1', 'feature2']]
最终生成的DataFrame格式如下:
| dev_name | connect1 | connect2 | connect3 | connect4 | dev_type | feature1 | feature2 |
|---|---|---|---|---|---|---|---|
| some_name | cn1 | cn2 | cn3 | cn4 | some_type | ft 1 | ft 2 |
| some_name2 | cn1 | cn2 | cn3 | cn4 | some_type2 | ft 1 | ft 2 |
如果你的dev_connects和dev_features元素长度固定,以上代码完全适用;若长度不固定,可通过动态生成列名的方式适配。
内容的提问来源于stack exchange,提问作者Omar Aziz
相关产品推荐
相关产品推荐

