首页 > 解决方案 > 将第一个出现列添加到分组数据框

问题描述

我有一个这样的数据框-

df=pd.DataFrame({'DT':[1,1,1,2,2,2,1,1],'city':['A','A','A','A','A','A','B','B'],'O':[22,33,44,55,66,77,88,99]})

现在,对于每个独特的城市,我想将首先出现在 Dt 列中的 O 列中的所有值相加。输出-

   city  O
0   A   77
1   B   88

解释 - 对于城市“A”,第一个唯一出现的 DT 是 1,所以我们添加相应的 O 列值,即 22。接下来对于同一个城市“A”,DT 列中第一个出现的 2 是第 4 行,所以我们添加其对应的O列== 22+55=77。同样对于城市 B,因为 DT 列中只有 1,所以 O 将是 88。

标签: pythonpandas

解决方案


您还可以提取第一行并与level

df.groupby(['DT','city'])['O'].first().sum(level=1)

输出:

city
A    77
B    88
Name: O, dtype: int64

推荐阅读