可能是该问题的答案,但我无法找到合适的解决方案,因此我正在寻找理想的解决方案。假设我有多个CSV文件(大约1500个),其中包含具有一些时间序列数据(10,000次或行)的单列。所有CSV文件中的列标题名称均相同。假设我有CSV文件,例如:
aa1.csv aa2.csv: aa3.csv:............aa1500.csv:
datavalue datavalue datavalue datavalue
4 1 1 2
2 3 6 4
3 3 3 8
4 4 8 9
I want the output like this:
datavalue,datavalue,datavalue,datavalue,.....datavalue
4,1,1,..2
2,3,6,..4
3,3,3,..8
4,4,8,..9
我的代码无法正常工作,并给出了其他提示:
import pandas as pd
import csv
import glob
import os
path 'F:/Work/'
files_in_dir = [f for f in os.listdir(path) if f.endswith('csv')]
for filenames in files_in_dir:
df = pd.read_csv(filenames)
df.to_csv('out.csv', mode='a')
如果有人可以提供帮助?
答案 0 :(得分:2)
您可以在numpy的一些帮助下以以下方式尝试
import pandas as pd
import numpy as np
import os
path 'F:/Work/'
files_in_dir = [f for f in os.listdir(path) if f.endswith('csv')]
temp_data = []
for filenames in files_in_dir:
temp_data.append(np.loadtxt(filenames,dtype='str'))
temp_data = np.array(temp_data)
np.savetxt('out.csv',temp_data.transpose(),fmt='%s',delimiter=',')
答案 1 :(得分:1)
使用pandas concat函数
import pandas as pd
dfs = []
for filenum in range(1,1501):
dfs.append( pd.read_csv('aa{}.csv'.format(filenum)) )
print(pd.concat(dfs,axis=1).to_csv(index=False))
答案 2 :(得分:0)
实现此目标的方法之一是通过合并现有CSV文件中的数据来创建另一个CSV文件(假设您拥有aa##.csv
格式的CSV文件)...
contents = []
for filenum in range(2):
f = open('aa{}.csv'.format(filenum + 1), 'r')
lines = f.readlines()
print(lines)
f.close()
if contents == []:
contents = [[] for a in range(len(lines))]
for row in range(len(lines)):
contents[row].append(lines[row].rstrip('\n'))
print(lines[row])
print(contents)
f = open('aa_new.csv', 'w')
for row in range(len(contents)):
line = str(contents[row])
line = line.strip('[]')
f.write(line + '\n')
f.close()
然后您可以使用熊猫打开并显示此文件。