这可能是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]