如何用Python按列写入列表到CSV?Pandas/np.savetxt失效求助
我来帮你解决这个按列写入CSV的问题!你之前用Pandas和numpy没成功,大概率是没处理好数据的维度或者结构,下面给你两种靠谱的解决方案:
方法一:使用Pandas(最直观)
Pandas的DataFrame天生就适合处理这种表格结构,直接用字典把表头和对应列的数据关联起来就行,非常简单:
import pandas as pd list1 = [1,2,3] list2 = [3,5,6] list3 = [4,5,6] # 用字典创建DataFrame,键就是表头名称,值对应每一列的数据 df = pd.DataFrame({'A': list1, 'B': list2, 'C': list3}) # 写入CSV文件,index=False用来去掉Pandas默认添加的行索引 df.to_csv('output_pandas.csv', index=False)
你之前可能是把列表按行传入DataFrame了,导致列的方向搞反,用字典的方式就能精准对应每一列。
方法二:使用numpy的np.savetxt()
numpy默认是按行写入数据的,所以需要先把你的列表组合成数组后转置,调整成需要的行结构,再写入:
import numpy as np list1 = [1,2,3] list2 = [3,5,6] list3 = [4,5,6] # 先把三个列表组合成一个3行3列的数组,然后转置成3行3列(对应目标的每行数据) data_array = np.array([list1, list2, list3]).T # 写入CSV:指定格式为整数、分隔符为逗号,同时设置表头并去掉默认的注释符号 np.savetxt('output_numpy.csv', data_array, fmt='%d', delimiter=',', header='A,B,C', comments='')
这里的关键是.T转置操作,不然写入的列方向会和你期望的相反;另外comments=''是为了不让表头前面自动加上#注释符号,保证表头格式正确。
生成的CSV文件内容都会符合你的预期:
A,B,C
1,3,4
2,5,5
3,6,6
内容的提问来源于stack exchange,提问作者Sarthak Gupta
相关产品推荐
相关产品推荐

