以下是我的数据框的一部分示例:
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
...
我需要列col1
中的每个唯一值来计算空单元格之间的非空单元格数。我尝试使用groupby()
对col1
和count()
中的唯一值进行分组来计算值,但它会计算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
我很感激任何建议!
答案 0 :(得分:2)
IIUC,PS:我没有添加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