这可能是Pandas: Filtering pivot table rows where count is fewer than specified value的重复,但我不断收到NaN错误

我有一个订单,订单值,客户ID和日期的数据框(df):

id, date, order_count, daily_order_value


我想查看在订购过程中订购超过一次,三次和十次的客人的总消费。

Pnon_merch = pivot_table(dffilter, index =["guest_id"],
                         values=['ct_order','order_value'],
                         aggfunc= {'ct_order':np.sum,
                                   'order_value': [np.sum, np.mean]})


打印Pnon_merch

                 ct_order order_value
                  sum   mean        sum
guest_id
  4813            1     2020.6400   2020.64


产生一个表,但是当我尝试时:

Pnon_merch_is1 = Pnon_merch[Pnon_merch["ct_order"]==1]


我得到一个NaN列表,

               ct_order order_value
                  sum    mean  sum
guest_id
  4813            NaN    NaN   NaN


truefalse = [Pnon_merch["ct_order"]==1]


给出True / False的列表

              sum
guest_id
    4813       True
    6517       True
    7876      False


为什么True / false返回NaN

此示例Filtering based on the "rows" data after creating a pivot table in python pandas似乎仅对索引进行过滤,而不对值进行过滤。

groupby level = 0也不产生正确的结果)

最佳答案

首先,我会这样重命名列(聚合后):

Pnon_merch.columns = ['ct_order_sum','order_value_mean','order_value_sum']


现在,您只需执行以下操作:

Pnon_merch_is1 = Pnon_merch[Pnon_merch["ct_order_sum"]==1]

07-24 09:52
查看更多