locを使用してパンダで複数のインデックスを操作して合計を一番下の行に書き込む方法

スコットベンソン

複数のグループ化された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]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonパンダを使用して複数のワークシートにヘッダーを書き込む方法

分類Dev

パンダを使用して同じ行インデックスの下に複数の行を作成する方法

分類Dev

マルチインデックスを使用してパンダデータフレームの単一行を複数行に合計する方法は?

分類Dev

Select-Stringを使用して複数の単一行パターンを照合し、出力に書き込む

分類Dev

パンダを使用して特定の列に書き込む方法

分類Dev

xlsxwriter(パンダなし)を使用して一連のリストをExcelに書き込む方法は?

分類Dev

パンダ-インデックス付きの辞書を使用して、列の行を並べ替える方法

分類Dev

Python:複数のヘッダー行を使用してCSVに書き込む

分類Dev

変数付きのBashを使用して複数の行ストリングを書き込む方法は?

分類Dev

複数のスレッドを使用して複数のファイルにデータを書き込む

分類Dev

OSXサンドボックスを使用して複数のファイルを書き込む

分類Dev

パンダを使用して、インデックスが一致する複数の行を複数の列に動的に変換します

分類Dev

複数の列をアンスタックしてインデックスに取り込む方法は?

分類Dev

インデックス列の値を無視して、既存のExcelシートの下にデータフレームを書き込む方法は?

分類Dev

パンダは一番上の行をマルチインデックスレベル1として設定します

分類Dev

パイプを使用して複数のデータベース接続にテーブルを書き込む

分類Dev

パンダを使用して、テキストデータ内の単語の出現頻度を見つけてcsvファイルに書き込む方法

分類Dev

ファイルをダウンロードし、リンクをクリックして一番下のdivまでスクロールします

分類Dev

Cを使用して低レイテンシの入力をバッファリングしてディスクに書き込む方法

分類Dev

パンダを使用してExcelに書き込む方法は?

分類Dev

IGListKitを使用してセクションの一番下までスクロールする方法

分類Dev

`get_loc`を使用してMultiIndex内の複数の列のインデックスを見つける方法

分類Dev

パンダを使用してユーザー定義の列名をcsvファイルに書き込む方法は?

分類Dev

複数のブールインデックスを使用して行操作を行うより効率的な方法

分類Dev

Pythonでパンダを使用して既存のExcelにデータを書き込む

分類Dev

Apache Beam 2.6でFileIO.writeDynamic()を使用して複数の出力パスに書き込む方法は?

分類Dev

インデックスパンダを使用して列に複数のデータを追加します

分類Dev

Cのファイルのポインタの配列を使用して複数のファイルにデータを書き込む方法は?

分類Dev

パンダを介してPython辞書に複数の列インデックスとヘッダー行を持つExcel

Related 関連記事

  1. 1

    Pythonパンダを使用して複数のワークシートにヘッダーを書き込む方法

  2. 2

    パンダを使用して同じ行インデックスの下に複数の行を作成する方法

  3. 3

    マルチインデックスを使用してパンダデータフレームの単一行を複数行に合計する方法は?

  4. 4

    Select-Stringを使用して複数の単一行パターンを照合し、出力に書き込む

  5. 5

    パンダを使用して特定の列に書き込む方法

  6. 6

    xlsxwriter(パンダなし)を使用して一連のリストをExcelに書き込む方法は?

  7. 7

    パンダ-インデックス付きの辞書を使用して、列の行を並べ替える方法

  8. 8

    Python:複数のヘッダー行を使用してCSVに書き込む

  9. 9

    変数付きのBashを使用して複数の行ストリングを書き込む方法は?

  10. 10

    複数のスレッドを使用して複数のファイルにデータを書き込む

  11. 11

    OSXサンドボックスを使用して複数のファイルを書き込む

  12. 12

    パンダを使用して、インデックスが一致する複数の行を複数の列に動的に変換します

  13. 13

    複数の列をアンスタックしてインデックスに取り込む方法は?

  14. 14

    インデックス列の値を無視して、既存のExcelシートの下にデータフレームを書き込む方法は?

  15. 15

    パンダは一番上の行をマルチインデックスレベル1として設定します

  16. 16

    パイプを使用して複数のデータベース接続にテーブルを書き込む

  17. 17

    パンダを使用して、テキストデータ内の単語の出現頻度を見つけてcsvファイルに書き込む方法

  18. 18

    ファイルをダウンロードし、リンクをクリックして一番下のdivまでスクロールします

  19. 19

    Cを使用して低レイテンシの入力をバッファリングしてディスクに書き込む方法

  20. 20

    パンダを使用してExcelに書き込む方法は?

  21. 21

    IGListKitを使用してセクションの一番下までスクロールする方法

  22. 22

    `get_loc`を使用してMultiIndex内の複数の列のインデックスを見つける方法

  23. 23

    パンダを使用してユーザー定義の列名をcsvファイルに書き込む方法は?

  24. 24

    複数のブールインデックスを使用して行操作を行うより効率的な方法

  25. 25

    Pythonでパンダを使用して既存のExcelにデータを書き込む

  26. 26

    Apache Beam 2.6でFileIO.writeDynamic()を使用して複数の出力パスに書き込む方法は?

  27. 27

    インデックスパンダを使用して列に複数のデータを追加します

  28. 28

    Cのファイルのポインタの配列を使用して複数のファイルにデータを書き込む方法は?

  29. 29

    パンダを介してPython辞書に複数の列インデックスとヘッダー行を持つExcel

ホットタグ

アーカイブ