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