2016-03-21 24 views
2

tarafından bu Pandas: Filtering pivot table rows where count is fewer than specified value kopyası olabilir ama ben NaN hatası Emir, alışveriş değerleri, müşteri kimliği ve tarihlerin bir veri çerçevesi (df) sahipPandalar filtre pivot tablo değeri

almaya devam;

id, date, order_count, daily_order_value 

Süre boyunca, bir defadan fazla, üç ve on kez sipariş veren toplam harcamaları görmek istiyorum. Pnon_merch

    ct_order order_value   
        sum  mean  sum 
guest_id        
    4813   1 2020.6400 2020.64 

baskı

 Pnon_merch = pivot_table(dffilter, index =["guest_id"] 

          , values=['ct_order','order_value'] 
          ,aggfunc= {'ct_order':np.sum,'order_value': [np.sum,np.mean]}) 

bir tablo oluşturur ama

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

çalıştığımda

   ct_order order_value   
        sum  mean  sum 
guest_id        
    4813   NaN NaN NaN 


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

Gerçek bir listesini verir, NaN bir listesini almak/Yanlış

[   sum 
    guest_id  
     4813  True 
     6517  True 
     7876  False 

Neden True/false NaN?

Bu örnekte, Filtering based on the "rows" data after creating a pivot table in python pandas yalnızca dizin değil, değerleri filtreliyor gibi görünüyor.

(GroupBy seviyesi = 0 doğru ya sonuç vermezse) sayesinde

böyle
+0

Çünkü günlük order_value'nizde alt çizgi eksik mi? – Jarad

+0

, düzenlemeleriniz ve önerileriniz @johnE ile güncellendi – conr404

+1

Doğru zaman ayırdığınız için teşekkürler, ama en üstte, orijinal df (veya küçük bir yaklaşım) oluşturmak için kod olması güzel. Aksi halde hiç kimse, aynı sorunu yaşamadığınız bir örnek veri çerçevesi oluşturmadan çalışıp çalışmadığını görmek için kodlarını test edemez. – JohnE

cevap

2

İlk i (toplama sonra) sütunları yeniden adlandırmak olacaktır:

:

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

şimdi sadece bunu yapabilirsiniz

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

Teşekkürler .... sütunları adlandırmak düşündüğüm bir şey değildi. – conr404

+0

@ conr404, yardımcı olabildiğime sevindim :) – MaxU

+0

Pnon_merch [Pnon_merch ["ct_order"] == 1] için NA'ları alabilmenizin olası bir nedeni, bir çoklu indeksle çalışıyor olmanızdır. Pnon_merch [Pnon_merch [('ct_order', 'sum')] == 1] kullanmayı deneyin. –