[英]Pandas Group-By and Sum not creating a new Data Frame
I have a dataframe -我有一个 dataframe -
TransactionDT TransactionAmt TransactionHour
0 86400 68.5 0
1 86401 29.0 1
2 86469 59.0 1
3 86499 50.0 2
4 86506 50.0 3
I want to create a new data frame that sums TransactionAmt
grouping by TransactionHour
, like -我想创建一个新的数据框,将TransactionHour
按TransactionAmt
分组相加,例如-
Sum(TransactionAmt) TransactionHour
0 68.5 0
1 88.0 1 (sum of those with TransactionHour == 1)
2 50.0 2
3 50.0 3
The code I wrote was -我写的代码是 -
sliced_data2 = data.groupby(['TransactionHour'])['TransactionAmt'].sum()
But it only gives me the Sum(TransactionHour)
但它只给了我Sum(TransactionHour)
sliced_data2 = data.groupby('TransactionHour',as_index = False).agg({"TransactionAmt" : "sum"})
sliced_data2 = data.groupby(['TransactionHour'])['TransactionAmt'].agg('sum')
This will work这将起作用
raw_data = {'TransactionDT': [86400, 86401, 86469, 86499, 86506],
'TransactionAmt': [68.5, 29.0, 59.0, 50.0, 50.0],
'TransactionHour': [0,1,1,2,3]}
df = pd.DataFrame(raw_data)
df.groupby('TransactionHour',as_index = False).agg({"TransactionAmt" : "sum"})
You need to add as_index=False` to make sure you are not setting the column that's being grouped as the new index for the dataframe.您需要添加 as_index=False` 以确保您没有将被分组为 dataframe 的新索引的列设置。
import pandas as pd
a = {'TransactionDT':[86400, 86401, 86469, 86499, 86506],'TransactionAmt':[68.5, 29.0, 59.0, 50.0, 50.0],'TransactionHour':[0,1,1,2,3]}
df = pd.DataFrame(a)
sliced_df = df.groupby(['TransactionHour'],as_index=False)['TransactionAmt'].sum())
print(sliced_df)
Output: Output:
TransactionHour TransactionAmt
0 0 68.5
1 1 88.0
2 2 50.0
3 3 50.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.