pandas

时间:2016-08-09 17:10:45

标签: python pandas dataframe

我有几个csv文件,我加载到pandas中。包含所有相同的列,几乎但不完全相同的索引。行由一对(segVar,val)索引。

我想要的是一个具有相同列的新DataFrame,以及索引的并集,每行是来自其他文件的相应行的中值。

我还需要保持行的顺序相同。 (文件之间的顺序是一致的)

这可能是两个问题:如何最好地获得索引的联合,以及如何获得中位数。但如果可以在一个答案中完成,那就太棒了。

2 个答案:

答案 0 :(得分:1)

您可以使用pd.concat组合DataFrame并在索引上使用groupby:

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [2, 3, 5]}, index = [1, 2, 3])

df1
Out: 
   A  B
1  1  2
2  2  3
3  3  5

df2 = pd.DataFrame({'A': [4, 5, 2], 'B': [1, 6, 3]}, index = [2, 3, 5])

df2
Out: 
   A  B
2  4  1
3  5  6
5  2  3

df3 = pd.DataFrame({'A': [4, 3, 1], 'B': [3, 2, 5]}, index = [3, 4, 5])

df3
Out: 
   A  B
3  4  3
4  3  2
5  1  5
pd.concat([df1, df2, df3]).groupby(level=0).median()
Out: 
     A    B
1  1.0  2.0
2  3.0  2.0
3  4.0  5.0
4  3.0  2.0
5  1.5  4.0

答案 1 :(得分:0)

答案,正如Ayhan所说的那样是concat和groupby。我将在另一个问题中发布我的下一个问题(如何对行进行排序),因为它更容易表达。