gpt4 book ai didi

python - Pandas Dataframe 按年分组并找到最重要的项目

转载 作者:行者123 更新时间:2023-11-28 21:38:34 25 4
gpt4 key购买 nike

我有以下格式的 pandas 数据框:

d = {'item_code': ['A', 'B', 'C', 'A', 'A', 'B', 'B', 'A', 'C'], 'year': ['2010', '2010', '2010', '2010', '2010', '2011', '2011', '2011', '2011']}
df = pd.DataFrame(data=d)
df

这是我的数据框的样子:

    item_code   year
0 A 2010
1 B 2010
2 C 2010
3 A 2010
4 A 2010
5 B 2011
6 B 2011
7 A 2011
8 C 2011

我已经使用 groupby 列出了每一年及其对应的项目。

df.groupby(['year', 'item_code']).size()

这是结果:

year  item_code
2010 A 3
B 1
C 1
2011 A 1
B 2
C 1
dtype: int64

我想获得一年中的顶级元素。例如,对于 2010 年,最上面的项目是 A。同样,对于 2011 年,最上面的项目是 B。我怎样才能得到它?

假设我想获得每年的前 N ​​项。我也该怎么做?

最佳答案

您可以使用 value_counts按计数对每个组进行排序:

N = 2
df1 = df.groupby('year')['item_code'].apply(lambda x: x.value_counts().iloc[:N])
#alternative
#df1 = df.groupby('year')['item_code'].apply(lambda x: x.value_counts().head(N))
print (df1)
year
2010 A 3
B 1
2011 B 2
A 1
Name: item_code, dtype: int64

groupby + head 的另一种解决方案:

N = 2
df1 = df.groupby(['year'])['item_code'].value_counts().groupby('year').head(N)
print (df1)
year item_code
2010 A 3
B 1
2011 B 2
A 1
Name: item_code, dtype: int64

关于python - Pandas Dataframe 按年分组并找到最重要的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48072537/

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