如何拆分Pandas中numpy生成的列表列并导出至Excel?
解决Pandas列表类型列拆分并导出Excel的问题
完整实现代码
import numpy as np import pandas as pd # 固定随机种子确保结果可复现 np.random.seed(42) # 生成numpy数组并转为列表,作为DataFrame列数据 processing_lists = [np.random.randint(0, 100, size=3).tolist() for _ in range(5)] cleaning_lists = [np.random.randint(0, 50, size=2).tolist() for _ in range(5)] # 创建包含列表列的初始DataFrame raw_df = pd.DataFrame({ 'Processing': processing_lists, 'Cleaning': cleaning_lists }) # 拆分Processing列,重命名为带序号的列名 processed_split = raw_df['Processing'].apply(pd.Series).rename(columns=lambda idx: f"Processing_{idx+1}") # 拆分Cleaning列,同理重命名 cleaned_split = raw_df['Cleaning'].apply(pd.Series).rename(columns=lambda idx: f"Cleaning_{idx+1}") # 合并拆分后的列,移除原列表列,得到最终DataFrame final_df = pd.concat([raw_df.drop(['Processing', 'Cleaning'], axis=1), processed_split, cleaned_split], axis=1) # 导出到Excel文件,不保留索引 final_df.to_excel("processed_output.xlsx", index=False)
步骤说明
- 数据生成:用numpy生成指定长度的随机数组,转为列表后存入DataFrame的
Processing和Cleaning列 - 列表列拆分:通过
apply(pd.Series)将每个列表元素拆分为单独列,并用rename给拆分后的列添加序号后缀,避免列名重复 - 合并与导出:将拆分后的列与原DataFrame(移除原列表列)合并,最后导出为Excel文件,关闭索引输出让格式更整洁
效果对比
当前初始效果(未拆分的DataFrame)
| Processing | Cleaning |
|---|---|
| [51, 92, 14] | [43, 33] |
| [10, 73, 60] | [2, 24] |
| [82, 86, 74] | [24, 33] |
| [74, 87, 99] | [2, 14] |
| [23, 2, 21] | [40, 30] |
预期导出效果(Excel文件内容)
| Processing_1 | Processing_2 | Processing_3 | Cleaning_1 | Cleaning_2 |
|---|---|---|---|---|
| 51 | 92 | 14 | 43 | 33 |
| 10 | 73 | 60 | 2 | 24 |
| 82 | 86 | 74 | 24 | 33 |
| 74 | 87 | 99 | 2 | 14 |
| 23 | 2 | 21 | 40 | 30 |
内容的提问来源于stack exchange,提问作者Nicholas Nicholas
相关产品推荐
相关产品推荐

