【问题标题】:Assign to the previous values when duplicate value is found in pandas data frame在 pandas 数据框中找到重复值时分配给以前的值
【发布时间】:2020-08-18 22:22:42
【问题描述】:

我有一个这样的数据框,

df 
col1      col2       col3
 A        [1,2]      [[1,2],[3,4]]
 B        [5]        [[6,7]]
 C        [8,9]      [[10,11],[12,13]]
 A        [14]       [[15,16]]

现在如果 col1 的列值重复,则将 col2 和 col3 分配给它的原始值,所以最终的数据框看起来像,

col1      col2           col3
A         [1,2, 14]      [[1,2],[3,4],[15,16]]
B         [5]            [[6,7]]
C         [8,9]          [[10,11],[12,13]]

最后一行的值分配给存在 A 的第一列。我可以使用 for 循环并与之前的值进行比较来做到这一点,但是执行时间会很长,所以寻找一些 pandas 快捷方式来最有效地做到这一点。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    试试groupbysum

    newdf = df.groupby('col1',as_index=False).sum()
    Out[31]: 
      col1        col2                        col3
    0    A  [1, 2, 14]  [[1, 2], [3, 4], [15, 16]]
    1    B         [5]                    [[6, 7]]
    2    C      [8, 9]        [[10, 11], [12, 13]]
    

    【讨论】:

    • 啊,我明白了,问是因为链涉及循环,谢谢:)
    猜你喜欢
    • 2013-05-09
    • 2014-01-29
    • 2019-07-25
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多