-3

我有一个数据框:

row1 col1 col2

1    U    1
2    U    1
3    U    1
4    D    1
5    D    1
6    U    1
7    U    1

When I did groupby sum I got :

    col1  col2
1     U     5
2     D     2

But what I want is :

      col1  col2

1       U     3
2       D     2
3       U     2

有人回答了类似的问题。但使用oracle sql。我只有 pandas 和 python 可用。

分组行使用 sql保持值的顺序

我怎样才能获得输出。

4

1 回答 1

0

Groupby 通过检查第一行是否不等于第二行。IE

df = pd.DataFrame({'col1':['U','U','D','U','U'],'col2':[3,1,2,1,1]})
mask = df['col1'].ne(df['col1'].shift()).cumsum()
ndf = df.groupby(mask).agg({'col1':'first','col2':'sum'})

     col1  col2
col1           
1       U     4
2       D     2
3       U     2
于 2017-12-10T11:14:53.813 回答