如何用Pandas从两个长度不同的列表生成指定格式的CSV文件?
解决方法
你报错的核心原因是代码逻辑错配了行和列:你把components整个列表当成DataFrame的一行数据,但components的元素数量(196个)和表头projects的列数(11个)不相等,导致列数匹配失败。
下面两种写法可以满足你的需求:
方法1:components作为带列名的第一列,projects作为后续表头
如果希望第一列有明确的列名(比如Components),后续表头用projects,其余单元格留空:
import pandas as pd def create_csv(): # 以components为索引、projects为列构建空DataFrame df = pd.DataFrame(index=components, columns=projects) # 导出时将索引转为第一列,并设置列名 df.to_csv('test.csv', index_label='Components') create_csv()
导出的CSV结构示例:
Components,Project_1,Project_2,Project_3 component_1,,, component_2,,, component_3,,,
方法2:components直接填入表头第一列,无额外列名
如果不需要第一列的专属列名,直接用projects作为完整表头,把components依次填入表头第一列的各行,其余单元格留空:
import pandas as pd def create_csv(): # 构造每行数据:每个component后补充对应数量的空值,保证列数和表头匹配 row_data = [[comp] + [None]*(len(projects)-1) for comp in components] df = pd.DataFrame(row_data, columns=projects) df.to_csv('test.csv', index=False) create_csv()
导出的CSV结构示例:
Project_1,Project_2,Project_3 component_1,, component_2,, component_3,,
内容的提问来源于stack exchange,提问作者macder
相关产品推荐
相关产品推荐

