首页 > 解决方案 > 如何在包含 NA 的行中对 pandas 数据框进行分组并为组分配索引?

问题描述

我想如果下面的例子应该解释我的问题。结果应如下所示:

|   datetime   value    block_nr   |
+----------------------------------+
|   …15:00     22.5            1   |
|   …15:05     22.0            1   |
|   …15:10     22.5            1   |
|   …15:15     NA              0   |
|   …15:20     NA              0   |
|   …15:25     23.0            2   |
|   …15:30     21.0            2   |
|   …15:35     21.5            2   |
|   …15:40     NA              0   |
|   …15:45     NA              0   |
|   …15:50     NA              0   |
|   …15:55     21.4            3   |
+----------------------------------+```

标签: pythonpandas

解决方案


numpy.where与测试非缺失值一起使用和Series.notna重复值用于与与s和链接的移位值进行比较Series.cumsum

s = df['value'].notna()
df['new'] = np.where(s, (s.ne(s.shift()) & s).cumsum(), 0)
print (df)
   datetime  value  block_nr  new
0     15:00   22.5         1    1
1     15:05   22.0         1    1
2     15:10   22.5         1    1
3     15:15    NaN         0    0
4     15:20    NaN         0    0
5     15:25   23.0         2    2
6     15:30   21.0         2    2
7     15:35   21.5         2    2
8     15:40    NaN         0    0
9     15:45    NaN         0    0
10    15:50    NaN         0    0
11    15:55   21.4         3    3

推荐阅读