我有几个csv文件,我加载到pandas中。包含所有相同的列,几乎但不完全相同的索引。行由一对(segVar,val)索引。
我想要的是一个具有相同列的新DataFrame,以及索引的并集,每行是来自其他文件的相应行的中值。
我还需要保持行的顺序相同。 (文件之间的顺序是一致的)
这可能是两个问题:如何最好地获得索引的联合,以及如何获得中位数。但如果可以在一个答案中完成,那就太棒了。
答案 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。我将在另一个问题中发布我的下一个问题(如何对行进行排序),因为它更容易表达。