2017-10-08 104 views
1

我有以下数据框:如何引用熊猫数据框的索引字段?

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”仅使用在不同的日期一个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) 

但我不能将包含第一列的两个级别分组。

这是它看起来在transactions.columns

Index(['payment_method_id', 'payment_plan_days', 'plan_list_price', 'actual_amount_paid', 'date'] dtype='object')

什么建议吗?

回答

1

我认为你需要reset_index的转换索引列,因为你的熊猫版本是波纹管0.20.1

Strings passed to DataFrame.groupby() as the by parameter may now reference either column names or index level names. Previously, only column names could be referenced. This allows to easily group by a column and index level at the same time.

transactions.reset_index().groupby(['msno', 'payment_method_id']).count() 

所以升级后,你的代码应该很好地工作:

transactions.groupby(['msno', 'payment_method_id']).count() 

公告:

之间的区别和sizecount省略NaN s和size没有。