Python 如何将数组列表导出到csv文件?

Python 如何将数组列表导出到csv文件?,python,numpy,csv,dataframe,arraylist,Python,Numpy,Csv,Dataframe,Arraylist,我使用的是Python3.6.8,我一直在搜索一点白色,但我仍然无法获得我想要的正确的csv导出 我有一个1D数组的列表,我正试图将其导出到CSV文件中。每个数组都有不同的大小,我想按照列顺序导出它们,这意味着每个1D数组将存储在CSV文件中的一列中 为了简化我的代码,它将执行以下操作: import pandas as pd list_of_thing = [] a = np.arange(10) list_of_thing.append(a) b = np.arange(5) list_o

我使用的是Python3.6.8,我一直在搜索一点白色,但我仍然无法获得我想要的正确的csv导出

我有一个1D数组的列表,我正试图将其导出到CSV文件中。每个数组都有不同的大小,我想按照列顺序导出它们,这意味着每个1D数组将存储在CSV文件中的一列中

为了简化我的代码,它将执行以下操作:

import pandas as pd

list_of_thing = []
a = np.arange(10)
list_of_thing.append(a)
b = np.arange(5)
list_of_thing.append(b)

csvfile = "./data.csv"
my_df = pd.DataFrame(list_of_thing)
my_df.to_csv(csvfile, index=False, header=False)
我还尝试使用
np.savetext
,并使用带有open(csvfile,“w”)的
作为输出:
,但没有太大成功

我得到的是这个

0123456789
0   1   2   3   4                   
当我希望它看起来像这样的时候

0
1   1
2   2
3   3
4   4
5.
6.
7.
8.
9

在append的位置,我在想是否有可能通过指定数组应该放在的列来保存数组。

尽管我不确定为什么要用这种方式形成df

使用:

my_df=pd.DataFrame(事物列表)
my_df=my_df.T
my_df.to_csv(csvfile,index=False,header=False)

这里有一种不同的方法可以将不同大小的列表输入到列中,我在较小的列表中填充了字符“”:


您可以使用
zip\u longest
来“转置”具有空白填充值的数组列表:

In [120]: from itertools import zip_longest

In [129]: alist = list(zip_longest(np.arange(10), np.arange(5),fillvalue=''))                                
In [130]: alist                                                                                              
Out[130]: 
[(0, 0),
 (1, 1),
 (2, 2),
 (3, 3),
 (4, 4),
 (5, ''),
 (6, ''),
 (7, ''),
 (8, ''),
 (9, '')]
(默认填充值为
None

然后将其写入一个文件,一个元组一个元组:

In [131]: with open('foobar.txt','w') as f: 
     ...:     for row in alist: 
     ...:         print('{} {}'.format(*row), file=f) 
     ...:                                                                                                    
In [132]: cat foobar.txt                                                                                     
0 0
1 1
2 2
3 3
4 4
5 
6 
7 
8 
9 
这也可以用savetxt编写:

np.savetxt('foobar.txt',alist, fmt='%s') 
对于string元素,我必须使用“%s”
格式,而不是数字格式。
savetxt`执行行迭代,因此不会更快


您可能需要使用列宽和分隔符,尤其是在短列表位于左侧时。

csv布局将很难阅读。您只需在python中迭代并逐行编写文件,它就可以完美地工作。谢谢。我不知道我们也可以直接在数据帧上使用转换
np.savetxt('foobar.txt',alist, fmt='%s')