1

たとえば、個人名、アカウントIDにクレジットとデビットのエントリがあるようなアカウントのエントリを持つパンダデータフレームdfがあります

date        Name      transaction-type  tran
2013-03-05  john Doe   credit          10
2013-05-05  john Doe   debit           20
2012-06-01  jane Doe   credit          50

トランザクションを日付、名前、およびトランザクション タイプ別にグループ化し、トランザクションを集計したいと考えていました。どうすればこれを行うことができますか?tran 列で reduce(numpy.subtract) を実行できることを望んでいましたが、パンダの正しい構文についてはよくわかりません。

4

1 に答える 1

1

IIUC、あなたは単に欲しいだけ.groupbyです.sum()

>>> df
                 date      Name transaction-type  tran
0 2013-03-05 00:00:00  john Doe           credit    10
1 2013-05-05 00:00:00  john Doe            debit    20
2 2012-06-01 00:00:00  jane Doe           credit    50
3 2012-06-01 00:00:00  jane Doe           credit    22
4 2012-06-02 00:00:00  jane Doe           credit    75
>>> df.groupby(["date", "Name", "transaction-type"]).sum()
                                      tran
date       Name     transaction-type      
2012-06-01 jane Doe credit              72
2012-06-02 jane Doe credit              75
2013-03-05 john Doe credit              10
2013-05-05 john Doe debit               20

ドキュメントのgroupby 集計に関するセクションを参照してください。

符号付きの合計値が必要な場合は、それも取得できます。

>>> df["tran"][df["transaction-type"] == "debit"] *= -1
>>> df.groupby(["date", "Name"]).sum()
                     tran
date       Name          
2012-06-01 jane Doe    72
2012-06-02 jane Doe    75
2013-03-05 john Doe    10
2013-05-05 john Doe   -20
于 2013-03-20T16:09:06.320 に答える