Pandas等效rbind操作

时间:2016-08-08 20:34:31

标签: python pandas

基本上,我正在遍历一堆CSV文件,最后希望append将每个数据帧合二为一。实际上,我只需要一个rbind类型的函数。所以,我做了一些搜索,然后跟着guide。但是,我仍然无法获得理想的解决方案。

下面附有示例代码。例如,data1的形状总是47乘42.但data_out_final的形状在前三个文件之后变为(47,42),(47,84)和(47,126)。理想情况下,它应该是(141,42)。另外,我检查data1的索引,即RangeIndex(start=0, stop=47, step=1)。感谢任何建议!

我的pandas版本为0.18.1

appended_data = []
for csv_each in csv_pool:
    data1 = pd.read_csv(csv_each, header=0)
    # do something here
    appended_data.append(data2) 
data_out_final = pd.concat(appended_data, axis=1)

如果使用data_out_final = pd.concat(appended_data, axis=1),data_out_final的形状将变为(141,94)

PS

有点想通了。实际上,您必须在pd.concat之前标准化列名。

2 个答案:

答案 0 :(得分:9)

>>> df1
          a         b
0 -1.417866 -0.828749
1  0.212349  0.791048
2 -0.451170  0.628584
3  0.612671 -0.995330
4  0.078460 -0.322976
5  1.244803  1.576373
6  1.169629 -1.135926
7 -0.652443  0.506388
8  0.549604 -0.691054
9 -0.512829 -0.959398

>>> df2
          a         b
0 -0.652161  0.940932
1  2.495067  0.004833
2 -2.187792  1.692402
3  1.900738  0.372425
4  0.245976  1.894527
5  0.627297  0.029331
6 -0.828628 -1.600014
7 -0.991835 -0.061202
8  0.543389  0.703457
9 -0.755059  1.239968

>>> pd.concat([df1, df2])
          a         b
0 -1.417866 -0.828749
1  0.212349  0.791048
2 -0.451170  0.628584
3  0.612671 -0.995330
4  0.078460 -0.322976
5  1.244803  1.576373
6  1.169629 -1.135926
7 -0.652443  0.506388
8  0.549604 -0.691054
9 -0.512829 -0.959398
0 -0.652161  0.940932
1  2.495067  0.004833
2 -2.187792  1.692402
3  1.900738  0.372425
4  0.245976  1.894527
5  0.627297  0.029331
6 -0.828628 -1.600014
7 -0.991835 -0.061202
8  0.543389  0.703457
9 -0.755059  1.239968

除非我误解你的需要,否则这就是你所需要的。

答案 1 :(得分:1)

尝试:http://pandas.pydata.org/pandas-docs/stable/10min.html?highlight=concat#concat

" pandas提供了各种工具,可以轻松地将Series,DataFrame和Panel对象与各种设置逻辑组合在一起,用于索引和关联代数功能,在连接/合并类型操作的情况下。"