gpt4 book ai didi

python - groupby.value_counts() 之后的 pandas reset_index

转载 作者:IT老高 更新时间:2023-10-28 20:52:19 26 4
gpt4 key购买 nike

我正在尝试按列分组并计算另一列的值计数。

import pandas as pd
dftest = pd.DataFrame({'A':[1,1,1,1,1,1,1,1,1,2,2,2,2,2],
'Amt':[20,20,20,30,30,30,30,40, 40,10, 10, 40,40,40]})

print(dftest)

dftest 看起来像

    A  Amt
0 1 20
1 1 20
2 1 20
3 1 30
4 1 30
5 1 30
6 1 30
7 1 40
8 1 40
9 2 10
10 2 10
11 2 40
12 2 40
13 2 40

进行分组

grouper = dftest.groupby('A')
df_grouped = grouper['Amt'].value_counts()

给了

   A  Amt
1 30 4
20 3
40 2
2 40 3
10 2
Name: Amt, dtype: int64

我想要的是保留每组的前两行

另外,当我尝试 reset_index

时,我被一个错误弄糊涂了
df_grouped.reset_index()

以下错误

df_grouped.reset_index() ValueError: cannot insert Amt, already exists

最佳答案

reset_index 中需要参数name , 因为 Series 名称与 MultiIndex 的级别之一的名称相同:

df_grouped.reset_index(name='count')

另一种解决方案是rename 系列名称:

print (df_grouped.rename('count').reset_index())

A Amt count
0 1 30 4
1 1 20 3
2 1 40 2
3 2 40 3
4 2 10 2

更常见的解决方案是 value_counts 是聚合 size :

df_grouped1 =  dftest.groupby(['A','Amt']).size().reset_index(name='count')

print (df_grouped1)
A Amt count
0 1 20 3
1 1 30 4
2 1 40 2
3 2 10 2
4 2 40 3

关于python - groupby.value_counts() 之后的 pandas reset_index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39778686/

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