Python2.7下拆分Pandas列中的字典并生成新DataFrame
没问题,我来帮你搞定这个需求!针对Python2.7环境下处理带字典的DataFrame列拆分,我给你整理了完整的步骤和代码:
1. 先装必要的依赖
因为Python2.7的pandas读取Excel得靠xlrd库,而且得选兼容Python2.7的版本,直接跑下面的命令就行:pip install pandas==0.24.2 xlrd==1.2.0
(注:这俩版本是亲测能在Python2.7上正常跑的,高版本的pandas和xlrd已经不支持Python2了)
2. 读取Excel文件到DataFrame
假设你的Excel文件名叫data.xlsx,用pandas的read_excel就能轻松读进来:
import pandas as pd # 读取Excel文件 df = pd.read_excel('data.xlsx') print("原始DataFrame:") print(df)
跑完这部分,你就能得到题目里给出的原始df结构了。
3. 拆分category列,转成目标格式
由于Python2.7的pandas没有后来的explode方法,咱们换个思路用apply+stack来处理字典列,代码如下:
# 把每个字典转成Series,再堆叠展开成行 df_expanded = df['CATEGORY'].apply(pd.Series).stack().reset_index(level=1) # 重命名列名,匹配你要的结构 df_expanded.columns = ['CATEGORY_ID', 'CATEGORY_NAME'] # 重置索引(可选,看你要不要保留原来的索引) df2 = df_expanded.reset_index(drop=True) print("拆分后的DataFrame:") print(df2)
给你解释下每一步:
apply(pd.Series)会把每个单元格里的字典拆成列,字典的键是列名,对应的值就是单元格内容;stack()会把这些列转成行,形成多级索引;reset_index(level=1)把原来的列名(也就是字典的键)提取出来作为CATEGORY_ID,对应的值就是CATEGORY_NAME;- 最后重置索引后,就得到了你想要的df2结构。
拿你给的示例数据测试,跑出来的df2就是:
| CATEGORY_ID | CATEGORY_NAME |
|---|---|
| 60 | SHOES |
| 46 | HARDWARE |
| 60 | SHOES |
| 219 | GOVERNMENT OFFICE |
| 87 | ARCADES |
| 60 | SHOES |
完全符合要求!
内容的提问来源于stack exchange,提问作者Hrithu
相关产品推荐
相关产品推荐

