Python数据框到CSV-数组元素以分隔列

时间:2018-10-06 20:21:14

标签: python csv

Python数据框。我有一个数据框,每一行都有整数数组列表。如何将其写入一个csv文件,该数组的每个匹配项都放入csv的相应列中。

我尝试使用csv命令

但是我所有的行元素都进入了csv文件的一列。

df如下

[123, 1234, 2334]
[2345, 12, 12345, 4566, 567]
[12, 1233, 112]

我想在csv的第一列中获得123,2345,12,在csv的第二列中获得1234,12,1233,等等。

这可能吗?

2 个答案:

答案 0 :(得分:0)

出于很多原因,为此使用pandas或numpy。因此,请不要执行以下操作。

假设列表本身在列表中:

df = [[123,1234,2334], [2345,12,12345,4566,567], [12,1233,112]]
sep = ","
print("\n".join([sep.join(list(map(str, x))) for x in df]), file=file)

结果:

123,1234,2334 
2345,12,12345,4566,567
12,1233,112

答案 1 :(得分:0)

正如其他人提到的那样,您可能想研究pandas或numpy,因为它们是为处理大量数据而创建的优化库。

但是,如果数据框不是很大,并且不想使用外部库,则可以始终使用re.findall()方法来过滤数据,对其进行格式化,然后添加结果存入字典。

import sys
import re

filename = sys.argv[1]
with open(filename, 'r') as input_file:
    input_data = input_file.read()

regex = r'\[(.+?)]'
filtered_data = re.findall(regex, input_data)

output_data = {}
for line in filtered_data:
    line_values = line.split(', ')
    for (j, value) in enumerate(line_values):
        if j not in output_data:
            output_data[j] = []

        output_data[j].append(value)

with open('output.csv', 'w') as output_file:
    for elements in output_data.values():
        output_file.write(', '.join(elements))
        output_file.write('\n')