熊猫:DataFrame中重复索引值的平均值

时间:2018-08-13 16:47:46

标签: python pandas dataframe

说我有以下DataFrame:

df = pd.DataFrame({'a':[0,1,2,3,1,2,3,4],
                   'b':[4,4,2,4,6,7,8,9]},
                   index = ['2010Q1', '2010Q1', '2010Q2', '2010Q2', '2010Q2',
                            '2010Q3', '2010Q3', '2010Q4'])

        a  b
2010Q1  0  4
2010Q1  1  4
2010Q2  2  2
2010Q2  3  4
2010Q2  1  6
2010Q3  2  7
2010Q3  3  8
2010Q4  4  9

请注意,每个索引值都是重复的。我想要的是返回另一个对重复的索引行求平均值的DataFrame,并返回另一个没有重复的DataFrame。

例如

          a    b
2010Q1  0.5  4.0
2010Q2  2.0  4.0
2010Q3  2.5  7.5
2010Q4  4.0  9.0

我对如何获取第一个或最后一个重复的行有一个想法,但是我不知道如何对重复项求平均。

例如

df[df.index.duplicated(keep = 'first')]
df[df.index.duplicated(keep = 'last')]

1 个答案:

答案 0 :(得分:0)

我认为@ user3483203的groupby方法是最简单的。但是另一种选择是使用pivot_table()

df.reset_index().pivot_table(columns=["index"]) # add .T to transpose dates to rows

index  2010Q1  2010Q2  2010Q3  2010Q4
a         0.5     2.0     2.5     4.0
b         4.0     4.0     7.5     9.0