複数のグループ化されたPandasテーブルがあり、以下に示す2つのインデックスの例を使用しています-
| |Transactions|Sales|Refund|Cashback|Total
|Index|Index|----------------------------------------
one_ | two_|DATA_ |DATA|DATA_ |DATA_ |DATA_|
one_ | two_|DATA_ |DATA|DATA_ |DATA_ |DATA_|
one_ | two_|DATA_ |DATA|DATA_ |DATA_ |DATA_|
one_ | two_|DATA_ |DATA|DATA_ |DATA_ |DATA_|
one_ | two_|DATA_ |DATA|DATA_ |DATA_ |DATA_|
one_ | two_|DATA_ |DATA|DATA_ |DATA_ |DATA_|
...etc
問題は、私が使用df.loc['Total']= df.sum()
すると次の結果が得られることです-
|Transactions|Sales|Refund|Cashback|Total
(one_,two_) |DATA_ |DATA |DATA_ |DATA_ |DATA_|
(one_,two_) |DATA_ |DATA |DATA_ |DATA_ |DATA_|
(one_,two_) |DATA_ |DATA |DATA_ |DATA_ |DATA_|
(one_,two_) |DATA_ |DATA |DATA_ |DATA_ |DATA_|
(one_,two_) |DATA_ |DATA |DATA_ |DATA_ |DATA_|
(one_,two_) |DATA_ |DATA |DATA_ |DATA_ |DATA_|
Total |SUM__ | | | |
以下の私の希望する出力:
| |Transactions|Sales|Refund|Cashback|Total
|Index|Index|----------------------------------------
one_ | two_|DATA_ |DATA|DATA_ |DATA_ |DATA_|
one_ | two_|DATA_ |DATA|DATA_ |DATA_ |DATA_|
one_ | two_|DATA_ |DATA|DATA_ |DATA_ |DATA_|
one_ | two_|DATA_ |DATA|DATA_ |DATA_ |DATA_|
one_ | two_|DATA_ |DATA|DATA_ |DATA_ |DATA_|
one_ | two_|DATA_ |DATA|DATA_ |DATA_ |DATA_|
|TOTAL|SUM |SUM |SUM |SUM |SUM |
これは、上記の結果を生成するために必要な現在のコードです-
df = pd.DataFrame(transaction_object)
# Check if dataframe empty
if df.empty:
messages.error(request, 'No Data Found')
context['desc'] = 'Summary Reports'
return render(request, 'console/reports.html', context=context)
df.settlementhistoryid = df.settlementhistoryid.replace(settlement_date)
def format(x):
return "{:.2f}".format(x / 100)
def card_scheme_rules(x):
a = x['transactionsequencenumber'].nunique()
b = x[df['transactiontype'] == 1]['transactionamount'].sum()
c = x[df['transactiontype'] == 4]['transactionamount'].sum()
d = x[df['transactiontype'] == 3]['transactionamount'].sum()
e = x['transactionamount'].sum()
return pd.Series([a, b, c, d, e], index=['transactions', 'sales', 'refund', 'cashback', 'Total'])
df.settlementhistoryid = pd.to_datetime(df.settlementhistoryid).dt.strftime('%d-%m-%Y')
df.transactiondate = pd.to_datetime(df.transactiondate).dt.strftime('%d-%m-%Y')
grouped_df = df.groupby(['settlementhistoryid', 'transactiondate']).apply(card_scheme_rules)
grouped_df['sales'] = grouped_df['sales'].apply(format)
grouped_df['refund'] = grouped_df['refund'].apply(format)
grouped_df['cashback'] = grouped_df['cashback'].apply(format)
grouped_df['Total'] = grouped_df['Total'].apply(format)
grouped_df.loc['Total'] = pd.Series(grouped_df['transactions'].sum(), index=['transactions'])
card_scheme_html_class = str(grouped_df.to_html().replace('class="dataframe"',
'class="display" style="width:100%;"'))
loc []で渡す追加の値はありますか?
index_1の値が欠落しているため、次のことを試すことができます。
df.loc[('', 'Total'), :] = df.sum(axis=0)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加