Python 计算大熊猫中空单元格之间的填充单元格数
下面是我的数据帧的一部分示例:Python 计算大熊猫中空单元格之间的填充单元格数,python,pandas,Python,Pandas,下面是我的数据帧的一部分示例: 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
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
如果您有任何建议,我将不胜感激 IIUC,PS:我没有添加
reset\u 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
IIUC,PS:我没有添加
reset\u 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