如何基于含列表元素的DataFrame首行生成指定格式CSV文件?
问题描述
给定一个包含列表元素的Pandas DataFrame(示例代码及数据如下),需要仅基于首行数据生成指定格式的CSV文件。
示例DataFrame代码
import pandas as pd # 包含列表元素的示例DataFrame data = { 'ColumnA': [['A', 'B', 'C'], ['D', 'E'], ['F'], ['G', 'H', 'I', 'J']], 'ColumnB': [['1', '2', '3', '4'], ['5'], ['6', '7'], ['8', '9', '10']] } df = pd.DataFrame(data)
对应的DataFrame输出:
ColumnA ColumnB 0 [A, B, C] [1, 2, 3, 4] 1 [D, E] [5] 2 [F] [6, 7] 3 [G, H, I, J] [8, 9, 10]
目标CSV格式
需要生成如下内容的CSV文件:
ColumnA,ColumnB A,1 B,2 C,3 NaN,4
解决方案
可以通过以下步骤实现需求:
- 提取DataFrame首行的两个列表数据
- 将列表转换为长度自动对齐的Series(短列表会自动补
NaN) - 组合成新DataFrame后导出为CSV
具体代码如下:
import pandas as pd # 原DataFrame(如题目所示) data = { 'ColumnA': [['A', 'B', 'C'], ['D', 'E'], ['F'], ['G', 'H', 'I', 'J']], 'ColumnB': [['1', '2', '3', '4'], ['5'], ['6', '7'], ['8', '9', '10']] } df = pd.DataFrame(data) # 提取首行的两个列表 col_a_list = df.loc[0, 'ColumnA'] col_b_list = df.loc[0, 'ColumnB'] # 转换为自动对齐的Series,短列表补NaN s_a = pd.Series(col_a_list) s_b = pd.Series(col_b_list) # 组合成新DataFrame并导出CSV result_df = pd.DataFrame({'ColumnA': s_a, 'ColumnB': s_b}) result_df.to_csv('output.csv', index=False)
代码说明
df.loc[0, 'ColumnA']精准提取首行的ColumnA列表数据,同理获取ColumnB的列表pd.Series()转换列表时,Pandas会自动补全短列表的缺失值为NaN,保证两个Series长度一致to_csv('output.csv', index=False)导出时关闭默认索引列,完全匹配目标格式
内容的提问来源于stack exchange,提问作者John Angelopoulos
相关产品推荐
相关产品推荐

