私は次のデータフレームを持っています:
payment_method_id payment_plan_days plan_list_price actual_amount_paid date
msno
YyO+tlZtAXYXoZhNr3Vg3+dfVQvrBVGO8j1mfqe4ZHc= 41 30 129 129 2015-01-01
AZtu6Wl0gPojrEQYB8Q3vBSmE2wnZ3hi1FbK1rQQ0A4= 41 30 149 149 2015-01-01
UkDFI97Qb6+s2LWcijVVv4rMAsORbVDT2wNXF0aVbns= 41 30 129 129 2015-01-02
キーは「msno」です。「msno」の大部分が異なる日付で1つのpayment_method_idのみを使用しているかどうかを確認する必要があります。
そこで、「msno」、「payment_method_id」でグループ化してみました。
transactions.groupby(['msno', 'payment_method_id']).count()
しかし、エラーが発生しました:KeyError: 'msno'
他のフィールドを使用したグループ化は正常に機能します。例:
transactions.groupby(['payment_plan_days', 'payment_method_id']).count()
次に、のためにmsno
、私も使用することができますgroupby level=0
transactions.groupby(level=0)
しかし、最初の列を含む2つのレベルをグループ化することはできません。
これはそれが見えるものです transactions.columns
Index(['payment_method_id', 'payment_plan_days', 'plan_list_price', 'actual_amount_paid', 'date'] dtype='object')
なにか提案を?
reset_index
パンダのバージョンは0.20.1
次のとおりなので、インデックスを列に変換する必要があると思います。
byパラメーターとしてDataFrame.groupby()に渡される文字列は、列名またはインデックスレベル名のいずれかを参照できるようになりました。以前は、列名のみを参照できました。これにより、列とインデックスレベルで同時に簡単にグループ化できます。
transactions.reset_index().groupby(['msno', 'payment_method_id']).count()
したがって、アップグレード後、コードは正常に機能するはずです。
transactions.groupby(['msno', 'payment_method_id']).count()
通知:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加