0

假设我有一个Pandas DataFrame形式:

    id      price       dur
1   153     80.0        0.0 
2   153     130.0       0.0 
3   153     95.0        0.0 
4   156     115.0       0.0
5   156     165.0       0.0
6   156     130.0       0.0
7   158     90.0        0.0
8   158     140.0       0.0 
9   158     105.0       0.0
10  158     155.0       0.0

我有一个名为的列id,它有duplicates. 我想duplicates通过保留 aunique id然后执行 the 的平均值priceid不是使用pd.DataFrame.drop_duplicates()

这是我的预期输出:

    id      price       dur
1   153     101.667     0.0 
2   156     136.667     0.0
3   158     122.5       0.0

我怎么可能处理这个?

4

1 回答 1

1

对于每一列,必须在以下位置指定聚合函数GroupBy.agg

df1 = df.groupby('id', as_index=False).agg({'price':'mean', 'dur':'first'})
print (df1)
    id       price  dur
0  153  101.666667  0.0
1  156  136.666667  0.0
2  158  122.500000  0.0

但是,如果dur每个列中的相同值id可以按两列分组:

df2 = df.groupby(['id', 'dur'], as_index=False)['price'].mean()
于 2020-04-14T10:26:23.717 回答