在Pandas DataFrame中,如果有重复的行存在,则将该列相加。

问题描述 投票:-1回答:1

我有一个相当大的数据集,它看起来类似于下面的数据集。这个数据集包含了10多列,这些列的值都是一样的,然后还有一个 "时间 "列,它将包含唯一的值。

我试图对时间列中每一行重复的数据进行加总,而对不重复的数据不做任何处理。

df1 = pd.DataFrame({'names':['Paul','George','Paul','John'],
                   'Time':[10,41,22,10],
                  'Date':['10/2/20', '10/1/20', '10/2/20','10/1/20']})

我试着对所有可能包含重复的列进行分组比,然后对时间进行加总,并重新设置索引,但是当与手动完成的电子表格进行比较时,行数比应该的要少。

先谢谢你的建议

python-3.x pandas sum duplicates pandas-groupby
1个回答
0
投票

IIUC,

首先,我们创建一个列表,列出所有的列,并remvoe。Time 的值,因为这就是我们要执行操作的列。我们的想法是将数值相加,如果没有重复,那么数值将是相同的,如果有重复的名字,就像Paul的情况一样,数值将被相加。

group_cols = df1.columns.tolist()
group_cols.remove('Time')

df2 = df1.groupby(group_cols,as_index=False)['Time'].sum()

print(df2)

    names     Date  Time
0  George  10/1/20    41
1    John  10/1/20    10
2    Paul  10/2/20    32
© www.soinside.com 2019 - 2024. All rights reserved.