Pandas按值过滤透视表

时间:2016-03-21 21:16:35

标签: python pandas pivot-table

这可能与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也没有产生正确的结果)

1 个答案:

答案 0 :(得分:2)

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

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

现在你可以这样做:

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