【问题标题】:pandas change a specific column value of duplicate rows熊猫更改重复行的特定列值
【发布时间】:2016-05-21 20:12:28
【问题描述】:

使用此处的示例Drop all duplicate rows in Python Pandas

假设我不想删除重复项,而是更改子集中其中一列中的数据值。

因此,根据示例,如果我们使用 subset=['A','C'] 来识别重复项,那么我想将第 1 行的列 'A' 从 foo 更改为 foo1。

我有一种复杂的方法来做到这一点,但必须有一种更简单的方法来利用矢量化/内置功能。

原始df:

    A   B   C
0   foo 0   A
1   foo 1   A
2   foo 1   B
3   bar 1   A

所需的df:

    A   B   C
0   foo 0   A
1   foo1 1   A
2   foo 1   B
3   bar 1   A

【问题讨论】:

    标签: python pandas duplicates


    【解决方案1】:

    您可以使用cumcount 并执行类似的操作

    >>> c = df.groupby(["A","C"]).cumcount()
    >>> c = c.replace(0, '').astype(str)
    >>> df["A"] += c
    >>> df
          A  B  C
    0   foo  0  A
    1  foo1  1  A
    2   foo  1  B
    3   bar  1  A
    

    这很有效,因为cumcount 给了我们

    >>> df.groupby(["A","C"]).cumcount()
    0    0
    1    1
    2    0
    3    0
    dtype: int64
    

    【讨论】:

    • 太棒了。效果很好。谢谢!!
    猜你喜欢
    • 2017-06-24
    • 2020-08-01
    • 1970-01-01
    • 2018-08-08
    • 2021-08-31
    • 1970-01-01
    • 2020-04-25
    • 2020-07-28
    • 2021-11-04
    相关资源
    最近更新 更多