gpt4 book ai didi

python - Pandas - 分组然后排序

转载 作者:太空宇宙 更新时间:2023-11-04 11:14:26 24 4
gpt4 key购买 nike

我想对 DataFrame 进行分组和排序:

  • 我们首先拥有总计数最大的区域()
  • 然后我们让每个 Name 按 count() 排序

我设法在多行中做到了这一点,但必须有更多的 pythonic/pandas 方式。

这样做的目的不仅是为了显示表格,而且还能够将其传递给 plot.ly 等工具来制作堆叠条形图,其中首先计数较多的区域,然后每个名称从最大到最小堆叠.

所以这样:

A   B   C
Region1 Name1 1
Region1 Name1 1
Region1 Name2 1
Region2 Name3 1
Region2 Name4 1
Region2 Name4 1
Region2 Name4 1
Region3 Name5 1
Region3 Name6 1

会变成:

A   B   Count C
Region2 Name4 3
Name3 1
Region1 Name1 2
Name2 1
Region3 Name5 1
Name6 1

(抱歉,格式不太好,但这应该是正确的版本,以便您可以复制/粘贴表格数据)

创建第一个表的代码:

df = pd.DataFrame({'A': {0: 'Region1',
1: 'Region1',
2: 'Region1',
3: 'Region2',
4: 'Region2',
5: 'Region2',
6: 'Region2',
7: 'Region3',
8: 'Region3'},
'B': {0: 'Name1',
1: 'Name1',
2: 'Name2',
3: 'Name3',
4: 'Name4',
5: 'Name4',
6: 'Name4',
7: 'Name5',
8: 'Name6'},
'C': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1}})

最佳答案

嗯,不确定这是否是最好的方法,但我正在使用 sort_valuespd.Categorical :

m=(df.groupby(['A','B'])['C'].size().reset_index().sort_values('C',ascending=False)
.reset_index(drop=True))
m.A = pd.Categorical(m.A,m.A.unique(),ordered=True)
m.sort_values('A').reset_index(drop=True)

         A      B  C
0 Region2 Name4 3
1 Region2 Name3 1
2 Region1 Name1 2
3 Region1 Name2 1
4 Region3 Name5 1
5 Region3 Name6 1

关于python - Pandas - 分组然后排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57363128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com