DataFrame Groupby同时维护原始DataFrame

时间:2016-09-04 17:21:40

标签: python pandas dataframe group-by

我有一个包含9列的DataFrame,这些列是星期几(1-7),一年中的一周(1-52),一年中的一个月(1-12),时间段(每个3小时),工资日(0,1)和假日(0,1)和金额(实数)。时间放在时间仓中,例如15:00放置在第6个时间箱中,7:34放在第3个时间箱中。

Day Week    Month   Time    Salary  Holiday Amount
1   5       2      1        0       0        700.0
1   5       2      1        0       0        800.0
3   18      5      7        1       0        90.0

基本上,我需要按前6列对数据进行分组,然后创建一个新的列,即Amount的总和值。但是,由于我需要维护原始数据帧,因此将重复此数量。因此,它必须仅对具有相同日,周,月,时间,薪水和假日的购买进行求和,即该组中的总和。

Day Week    Month   Time    Salary  Holiday Amount  Sum
1   5       2      1        0       0        700.0   1500.0
1   5       2      1        0       0        800.0   1500.0
3   18      5      7        1       0        90.0    90.0

我按天,周,月,时间,薪资,假期和总金额对数据框进行分组。

temp= features.groupby(by=["Day", "Week", "Month", "Time", "Salary", "Holiday"])["Amount"].sum()

2 个答案:

答案 0 :(得分:1)

您可以使用transformthe docs返回与原始数据框大小相同的列:

  

transform方法返回一个索引相同的对象(相同   大小)作为被分组的那个。这样,传递的变换函数   应返回与组块大小相同的结果。

df['Sum'] = df.groupby(["Day", "Week", "Month", "Time", "Salary", "Holiday"]).transform('sum')

df    
# Day Week Month Time Salary Holiday Amount  Sum
#0  1   5      2    1      0       0    700 1500
#1  1   5      2    1      0       0    800 1500
#2  3  18      5    7      1       0     90   90

答案 1 :(得分:0)

您可以重置temp上的索引,然后在分组的所有列上与原始要素数据框进行外部合并。

root(-1, 3).simplify()
(-1)**(1/3)//Output