如何计算 pandas 数据透视表索引中的唯一值?

问题描述 投票:0回答:2

给定这样的数据框:

df = pd.DataFrame({
    'player': ['James', 'Henry', 'Abe', 'James', 'Henry', 'Brian', 'Claude', 'James'],     
    'team': ['A', 'B', 'A', 'B', 'A', 'A', 'A', 'C'],
    'game': [101, 102, 103, 101, 102, 104, 105, 101],
    'score': [10, 11, 12, 10, 11, 10, 12, 10]
})

我可以创建一个数据透视表,按球员和球队进行汇总,以比赛作为列并对得分进行求和:

pd.pivot_table(df, index = ['player', 'team'], columns = 'game', values = 'score', aggfunc = 'sum', fill_value = '')

这会返回一个像这样的表:

不过,我想做的是计算每个球员效力过的独特球队的数量,这样 Abe、Brian 和 Claude 都有 1 个,Henry 有 2 个,James 有 3 个。

我尝试过 nunique 和 count_values 但它们似乎只适用于数字,而不适用于字符串。我见过一些问题解决了在数据透视表的“值”部分中计算唯一值的问题,但在索引部分中没有解决。

python pandas pivot-table
2个回答
0
投票

IIUC用途:

df = pd.pivot_table(df, index = 'player', columns = 'game', values = 'team', aggfunc = 'nunique', fill_value = '')
print (df)
game    101  102  103  104  105
player                         
Abe               1.0          
Brian                  1.0     
Claude                      1.0
Henry        2.0               
James   3.0                    

0
投票

您可以使用

groupby
nunique

来完成
df.groupby('player')['team'].nunique()

player
Abe       1
Brian     1
Claude    1
Henry     2
James     3
© www.soinside.com 2019 - 2024. All rights reserved.