1
我正在读取几个.csv文件(每个文件都是第一列中的日期(我想索引)的时间序列,以及时间序列在第二列中我可以读取数据,但是当我希望每个文件都有自己的按日期索引的列时,它都会附加到数据框中的同一列上:试图将多个.csv读取到单独的数据帧列中
因此,例如,如果我有3个文件三个以上的现实)
csv1
1/1/2016,1.1
2/1/2016,1.2
3/1/2016,1.6
csv2
1/1/2016,4.6
2/1/2016,31.2
3/1/2016,1.8
csv3
2/1/2016,3.2
3/1/2016,5.8
目前我回:
0 1
1/1/2016 1.1
2/1/2016 1.2
3/1/2016 1.6
1/1/2016 4.6
2/1/2016 31.2
3/1/2016 1.8
2/1/2016 3.2
3/1/2016 5.8
当我想回:
0 1 2 3
1/1/2016 1.1 4.6 null
2/1/2016 1.2 31.2 3.2
3/1/2016 1.6 1.8 5.8
我此刻的代码如下所示:
def getData(rawDataPath):
big_frame = pd.DataFrame()
path = rawDataPath
allfiles = glob.glob(os.path.join(path,"*.csv"))
np_array_list = []
for file_ in allfiles:
df = pd.read_csv(file_,index_col=None, header=0)
np_array_list.append(df.as_matrix())
comb_np_array = np.vstack(np_array_list)
big_frame = big_frame.append(pd.DataFrame(comb_np_array))
return big_frame
任何帮助将非常感激。
感谢
由于这是伟大的!有没有办法将.csv文件名称添加为列标题? – Stacey
嗯我想你可以修改列名至少通过分配'dframe.columns = ['日期','csv1','csv2','csv3']'左右,或命名您的列创建帧时:'pd.read_csv(csv1,names = ['date','csv1'],header = None)'。这样就不需要为普通列加后缀,并且合并后的结果也不会有问题。 –
'pd.merge(df1,df2,...)'的替代(更漂亮)语法是'df1.merge(df2,on = 0,how ='outer')。merge(df3,on = 0,how ='outer')'和哇'减少(部分(...'非常优雅!:) –