2013-05-15 90 views
6

它總是看起來很容易的東西,bug我。我試圖獲得按月份和年份分組的Dataframe中某些變量的非空值數量。因此,我可以做到這一點,工作正常如何統計熊貓數據框組中的索引或空值的數量

counts_by_month=df[variable1, variable2].groupby([lambda x: x.year,lambda x: x.month]).count() 

,但我真的想知道的是有多少每組這些值是NaN的。所以我想在每個變量中計算Nans,以便我可以計算每個組中缺少的百分比數據。我找不到執行此操作的功能。 或 也許我可以通過計算組中的總項目達到相同的目的。然後NaNs將是總計 - '非空值'

我一直在試圖找出,如果我可以以某種方式計算索引值,但我還沒有能夠這樣做。任何援助對此非常感謝。 祝 傑森

回答

6
In [279]: df 
Out[279]: 
    A   B   C   D   E 
a foo  NaN 1.115320 -0.528363 -0.046242 
b bar 0.991114 -1.978048 -1.204268 0.676268 
c bar 0.293008 -0.708600  NaN -0.388203 
d foo 0.408837 -0.012573 1.019361 1.774965 
e foo 0.127372  NaN  NaN  NaN 

In [280]: def count_missing(frame): 
    return (frame.shape[0] * frame.shape[1]) - frame.count().sum() 
    .....: 

In [281]: df.groupby('A').apply(count_missing) 
Out[281]: 
A 
bar 1 
foo 4 
dtype: int64 
+0

優秀。感謝這個例子! SHAPE給了我需要的信息然後計算NaN值。感謝堆 – user1911866

4
df.isnull().sum() 

更快,不需要自定義函數:)

+3

'df.isnull()。sum(axis = 1)'更適合於這個問題。它正在計算每行中缺失值的數量。 – steco

+0

我站在更正:) – GrimSqueaker

相關問題