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,等等。
这可能吗?
答案 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')