【问题标题】:print pandas dataframe diff to new column将 pandas dataframe diff 打印到新列
【发布时间】:2022-11-25 10:42:21
【问题描述】:

我有一个看起来像这样的数据框。每个有两行。这些代表得分最高的行是获胜者的游戏:

id   points
677    5
677    15
678    25
678    6

我想在数据框中生成一个新列“win”,以便具有相同 ID 且点数较高的行获得值 1,较小的为 0。

像这样:

id   points  win
677    5      0
677    15     1
678    25     1
678    6      0

我想我可以做这样的事情,但无法弄清楚如何让 diff 根据大于或小于的条件输出一个值,然后推送到一个新列。

print(df.set_index('id').groupby(level=0).diff().query('points' > 0).index.unique().tolist())

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    找到每个 id 的最高分并将其标记为获胜:

    df['win'] = (df.points.groupby(df['id']).transform('max') == df.points).astype(int)
    df
        id  points  win
    0  677       5    0
    1  677      15    1
    2  678      25    1
    3  678       6    0
    

    【讨论】:

    • 谢谢!伟大的班轮!
    猜你喜欢
    • 2020-12-05
    • 1970-01-01
    • 2015-12-30
    • 2013-10-08
    • 2018-07-27
    • 2021-02-04
    相关资源
    最近更新 更多