首页 > 解决方案 > 如何使用熊猫为每个分组和计数的记录输出每个分组的单个记录

问题描述

我正在使用 Pandas 处理数据文件并尝试以分组形式输出数据,就像 SQL 分组函数一样,每组一个唯一的记录

我有一个包含一些假游戏统计数据的数据文件。我正在尝试按发布年份对游戏进行分组,并显示每组 1 条记录,其中包含年份和当年的游戏数量。到目前为止,我可以计算游戏,但输出包含所有这样计算的记录:

import pandas as pd

print("*** All data count ***")
data = pd.read_csv('../input/games.csv')
print(len(data))

print("*** No duplicates ***")
no_dups = data.drop_duplicates()
print(len(no_dups))

print("*** drop unused columns: type and name for better ")
no_shit = no_dups.drop(['type', 'name', ], axis=1)

print("*** Invalid removed")
cols = ['yearpublished']
no_shit[cols] = no_shit[no_shit[cols] > 0][cols]
clean_data = no_shit.dropna()
print(len(clean_data))

print("*** Valid sorted ***")
sorted_data = clean_data.sort_values(cols)
sorted_data['title_count'] = sorted_data.groupby('yearpublished')['id'].cumcount() + 1

print(sorted_data.tail(20))

现在的输出如下所示,所以我的代码实际上是对记录进行分组,但只显示所有记录而不是最后一个。

>            id  yearpublished     ...       average_weight  title_count 78848  177659         2016.0     ...               4.0000          296
> 81003  183415         2016.0     ...               0.0000          297
> 79401  179448         2016.0     ...               0.0000          298
> 81107  183684         2017.0     ...               0.0000            1
> 79706  180185         2017.0     ...               0.0000            2
> 80431  181888         2017.0     ...               0.0000            3
> 80676  182408         2017.0     ...               0.0000            4
> 62324  127709         2017.0     ...               2.6667            5
> 76115  170599         2017.0     ...               2.0000            6
> 77249  173635         2017.0     ...               0.0000            7
> 80039  181006         2017.0     ...               0.0000            8
> 65192  135986         2017.0     ...               4.0000            9
> 79263  178958         2017.0     ...               0.0000           10
> 64446  133601         2017.0     ...               0.0000           11
> 64447  133602         2017.0     ...               0.0000           12
> 81247  184151         2017.0     ...               0.0000           13
> 80677  182409         2017.0     ...               0.0000           14
> 79942  180797         2018.0     ...               0.0000            1
> 81294  184349         2018.0     ...               0.0000            2
> 80092  181140         2018.0     ...               0.0000            3

我想有这个输出instad:

 id  yearpublished     ...       average_weight  title_count
79401  179448         2016.0     ...               0.0000          298
80677  182409         2017.0     ...               0.0000           14
80092  181140         2018.0     ...               0.0000            3

标签: pythonpandas

解决方案


推荐阅读