在Pandas中如何对行进行分组?

3

背景:我有以下数据框:

import pandas as pd
d = {'day': ["t", "m", "m", "w", "t", "m","w"], 
     'month': ["01", "01", "01", "01", "02","02","02"], 
     'count': [1, 1, 1, 1,1,1,1]}
df = pd.DataFrame(data=d)

我按照日和月进行分组:

我按照daymonth进行分组:

df.groupby(by=['day','month']).count()

输出:

day  month count    
m    01     2
     02     1
t    01     1
     02     1
w    01     1
     02     1

我将组织数据以获得以下输出:

期望输出:

day  month count    
m    01     2
t    01     1
w    01     1
m    02     1
t    02     1
w    02     1           

我尝试使用 df.sort_values('month')df.sort_values('day'),但它们并不能完全给我想要的结果。

问题:我需要添加哪些代码行才能得到我想要的输出?

4个回答

2

给你。只有在正确订购日期的情况下才会发生这种情况,但如果您以后有更多天数,可能需要将它们转换为实际的0-6星期几。

df.groupby(by=['day','month'], as_index=False).count().sort_values(by=['month', 'day'])

    day month   count
0   m   01  2
2   t   01  1
4   w   01  1
1   m   02  1
3   t   02  1
5   w   02  1

如果您不需要原始索引,请使用其他解决方案。 - ALollz

2

使用带有level参数的sort_index

df.groupby(by=['day','month']).count().sort_index(level=1)

输出:

           count
day month       
m   01         2
t   01         1
w   01         1
m   02         1
t   02         1
w   02         1

并且如果您愿意,可以重置索引。
df.groupby(by=['day','month']).count().sort_index(level=1).reset_index()

  day month  count
0   m    01      2
1   t    01      1
2   w    01      1
3   m    02      1
4   t    02      1
5   w    02      1

2
groupby会自动对索引进行排序。相反,您可以更改分组顺序,然后交换级别。
df.groupby(by=['month', 'day']).count().swaplevel(0, 1)

           count
day month       
m   01         2
t   01         1
w   01         1
m   02         1
t   02         1
w   02         1

1
import pandas as pd
d = {'day': ["t", "m", "m", "w", "t", "m","w"], 
     'month': ["01", "01", "01", "01", "02","02","02"], 
     'count': [1, 1, 1, 1,1,1,1]}
df = pd.DataFrame(data=d)

df.groupby(['day','month']).count().reset_index()

输出(您现在可以应用sort()函数)
    day month count
0   m    01    2

1   m    02    1

2   t    01    1

3   t    02    1

4   w    01    1

5   w    02    1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接