2017-02-16 6 views
0

このデータフレームを「オートナンバー」でグループ化し、それぞれの最後の2つの金額を取得してリストのリストに入れたいPython/Pandas:各グループの最後の3つを取得しリストのリストに入れる方法

次のコードを使用して
     LoanAgreementID Amount TransactionDate \ 
0 252357C2-24C2-E611-8126-06CAB7997043 1667.35  2016-12-14 
1 252357C2-24C2-E611-8126-06CAB7997043 4181.28  2016-12-14 
2 4BF6F3D3-30C2-E611-8126-06CAB7997043 1667.35  2016-12-14 
3 4BF6F3D3-30C2-E611-8126-06CAB7997043 4181.28  2016-12-14 
4 4BF6F3D3-30C2-E611-8126-06CAB7997043 147.51  2017-01-18 
5 4BF6F3D3-30C2-E611-8126-06CAB7997043 147.51  2017-02-01 

           ContactID PaymentType CashLedgerType \ 
0 000FF848-42BE-E611-8126-06CAB7997043   NaN    5 
1 000FF848-42BE-E611-8126-06CAB7997043   NaN    5 
2 000FF848-42BE-E611-8126-06CAB7997043   NaN    5 
3 000FF848-42BE-E611-8126-06CAB7997043   NaN    5 
4 000FF848-42BE-E611-8126-06CAB7997043   0.0    3 
5 000FF848-42BE-E611-8126-06CAB7997043   0.0    3 

    KeyValue_String KeyValue_String.1 AutoNumber IssueDate date_helper 
0   Cheque    NaN  54940 2016-12-14 2016-12-14 
1   Cheque    NaN  54940 2016-12-14 2016-12-14 
2   Cheque    NaN  54945 2016-12-14 2016-12-14 
3   Cheque    NaN  54945 2016-12-14 2016-12-14 
4   Payment    PAP  54945 2016-12-14 2017-01-18 
5   Payment    PAP  54945 2016-12-14 2017-02-01 
0 1667.35 
1 4181.28 
3 4181.28 
4  147.51 
5  147.51 
Name: Amount, dtype: float64 

...

Amount_ref = group.groupby('AutoNumber')['Amount'].tail(2) 

私は出力を得ました...

0 1667.35 
1 4181.28 
4  147.51 
5  147.51 
Name: Amount, dtype: float64 

しかし、私の所望の出力

[[1667.35, 4181.28], [147.51, 147.51]] 

答えて

1

あなたがapplytolistを使用することができます...次のとおりです。

Amount_ref = group.groupby('AutoNumber')['Amount'] 
        .apply(lambda x: x.tail(2).tolist()).tolist() 
print (Amount_ref) 
[[1667.35, 4181.28], [147.51, 147.51]] 

または:

Amount_ref = group.groupby('AutoNumber')['Amount'] 
        .apply(lambda x: x.iloc[-2:].tolist()).tolist() 
print (Amount_ref) 
[[1667.35, 4181.28], [147.51, 147.51]] 
+0

恐ろしい - 本当にありがとうございました! –

関連する問題