【问题标题】:Modify Rows With Duplicate Values in a Python Pandas Dataframe在 Python Pandas 数据框中修改具有重复值的行
【发布时间】:2022-01-14 00:55:43
【问题描述】:

现在,我正在使用这个数据框..

Name DateSolved Points
Jimmy 12/3 100
Tim 12/4 50
Jo 12/5 25
Jonny 12/5 25
Jimmy 12/8 10
Tim 12/8 10

此时,如果数据集中有重复的名称,我只需使用 df.sort_values('DateSolved').drop_duplicates('Name', keep='last') 从数据框中删除最旧的名称(按日期),从而生成这样的数据集

Name DateSolved Points
Jo 12/5 25
Jonny 12/5 25
Jimmy 12/8 10
Tim 12/8 10

但是,我不想放弃最旧的,而是希望保留它,但要减少 50% 的分数。像这样的

Name DateSolved Points
Jimmy 12/3 50 (-50%)
Tim 12/4 25 (-50%)
Jo 12/5 25
Jonny 12/5 25
Jimmy 12/8 10
Tim 12/8 10

我该怎么做呢?我找不到一种方法来根据“名称”查找重复项,然后更改同一行中“点”列的值。

谢谢!

【问题讨论】:

    标签: python pandas dataframe csv


    【解决方案1】:

    IIUC 使用DataFrame.duplicated 选择所有重复项而不是最后一个,选择列Points 并除以2

    df.loc[df.duplicated('Name', keep='last'), 'Points'] /= 2
    print (df)
        Name DateSolved  Points
    0  Jimmy       12/3    50.0
    1    Tim       12/4    25.0
    2     Jo       12/5    25.0
    3  Jonny       12/5    25.0
    4  Jimmy       12/8    10.0
    5    Tim       12/8    10.0
    

    【讨论】:

      猜你喜欢
      • 2022-01-27
      • 2016-06-01
      • 2019-10-04
      • 2019-04-02
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      相关资源
      最近更新 更多