我有一个包含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()
答案 0 :(得分:1)
您可以使用transform
从the 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