簡體   English   中英

Pandas Group-By 和 Sum 沒有創建新的數據框

[英]Pandas Group-By and Sum not creating a new Data Frame

我有一個 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

我想創建一個新的數據框,將TransactionHourTransactionAmt分組相加,例如-

        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

我寫的代碼是 -

sliced_data2 = data.groupby(['TransactionHour'])['TransactionAmt'].sum()

但它只給了我Sum(TransactionHour)

sliced_data2 = data.groupby('TransactionHour',as_index = False).agg({"TransactionAmt" : "sum"})

sliced_data2 = data.groupby(['TransactionHour'])['TransactionAmt'].agg('sum')

這將起作用

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"})

您需要添加 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:

   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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM