Count
League Result
EPL H 16
D 9
A 10
Champ H 67
D 15
A 57
H 87
La Liga D 35
A 40
我有不同联赛的足球比赛成绩明细以及该结果发生的次数。
我想查看主场胜利、平局、客场胜利占比赛总数的百分比。我在下面看到了一个解决方案:
df.groupby("League").apply(lambda g: (g/g.sum()*100)
乍一看,这是有道理的,但是这里的g
到底是什么?我假设它是 H、D 或 A 计数,然后 g.sum() 对按每个分区分组的所有 H、D、A 计数求和。但是,如果 g
只是一个值,我们如何调用方法 g.sum()
呢?这里的g
到底是什么?
最佳答案
g
是一个数据帧。由于您对 'League'
进行分组,因此您将把 DataFrame 分成单独的 block ,其中包含 'League'
的唯一值。为了说明这一点,我们可以迭代 GroupBy 对象。
for idx, g in df.groupby('League'): # `idx` is the unique group key
print(g, '\n')
Count
League Result
Champ H 67
D 15
A 57
H 87
Count
League Result
EPL H 16
D 9
A 10
Count
League Result
La Liga D 35
A 40
apply
然后将您的函数分别应用于每个 DataFrame。调用 g.sum()
将为您提供一个对组中每一列求和的系列。
for idx, g in df.groupby('League'):
print(g.sum(), '\n')
Count 226
dtype: int64
Count 35
dtype: int64
Count 75
dtype: int64
关于python - .apply 如何在 Pandas DataFrame.groupby 上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62092600/