2017-12-06 11 views
0

の数をカウントし、私のデータフレームの一部の例である:私は空のセル間の非空のセルの数をカウントする列col1内のすべてのユニークな値のために必要なはパンダで空のセルの間に充填されたセルの下

col1  col2 
items1 10 
items1  5 
items1  3 
items1  2 
items1 NaN 
items1 NaN 
items1 NaN 
items1  4 
items1  1 
items1  1 
items2  6 
items2  4 
items2  5 
items2 NaN 
items2 NaN 
items2  2 
items2  8 
items2  7 
items2  9 
items2 NaN 
... 

。私は、col1count()の一意の値をグループ化するためにgroupby()を使用して、値をカウントしようとしましたが、一意の値のすべての空でない値をcol1に数えます。ここで

は私のコードです:

df = pd.DataFrame({'col1':('items1','items1','items1','items1','items1','items1','items1','items1','items1','items1','items2','items2','items2','items2','items2','items2','items2','items2','items2','items2'), 
        'col2': (10, 5, 3, 2, np.nan, np.nan, np.nan, 4, 1, 1, 6, 4, 5, np.nan, np.nan, 2, 8, 7, 9, np.nan)}) 
df.groupby('col1')['col2'].count().reset_index() 

結果は次のようになります。

 col1 col2 
0 items1  7 
1 items2  7 

しかし、私は次のことを取得する必要があります。

 col1 col2 
0 items1  4 
1 items1  3 
2 items2  3 
3 items2  4 

私は任意のために感謝されます助言!

答えて

2

IIUC、PS:私はそれがロングコードtoooを行いますreset_index()を追加しませんでした。..

df.groupby([df['col1'],df['col2'].isnull().diff().fillna(0).cumsum()])['col2'].count().replace(0,np.nan).dropna() 
Out[885]: 
col1 col2 
items1 0  4.0 
     2  3.0 
items2 2  3.0 
     4  4.0 
Name: col2, dtype: float64 
関連する問題