python - .apply 如何在 Pandas DataFrame.groupby 上工作?

标签 python python-3.x pandas dataframe

              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/

相关文章:

python - Pandas 数据框 : create new columns of labels based on other columns

python - 如何使用 Python 推断给定数据来填充 NaN 值?

python - ChatGPT API 定制训练的 AI 聊天机器人对 Python 查询应答 "None"

python - Python 中 '' 和 ""的区别

python - 如何从长字符串的一组指令中绘制路径

python - 如何得到除最终结果外的所有中间值 `reduce`?

python-3.x - numpy.loadtxt 无法在 Python 3 中读取 int

python - 使用 Wav 文件进行卷积房间脉冲响应 (python)

python - 如何从 pandas 数据框调用值到函数?

python - 在数据框的不同轴上绘制多个图形