Python 添加一列,该列为满足另一列上条件的每个索引递增

Python 添加一列,该列为满足另一列上条件的每个索引递增,python,pandas,Python,Pandas,我试图从数据帧生成一列,以作为分组的基础。我知道非NaN列下的每个NaN列都属于同一组。所以我写了这个循环(参见下面的cf),但我想知道是否有一种更像熊猫/蟒蛇的方式来用apply或理解列表来写它 import pandas >>> DF = pandas.DataFrame([134, None, None, None, 129374, None, None, 12, None], columns=['Val']) >>

我试图从数据帧生成一列,以作为分组的基础。我知道非NaN列下的每个NaN列都属于同一组。所以我写了这个循环(参见下面的cf),但我想知道是否有一种更像熊猫/蟒蛇的方式来用apply或理解列表来写它

import pandas

>>> DF = pandas.DataFrame([134, None, None, None, 129374, None, None, 12, None],
                      columns=['Val'])
>>> a = [0]
>>> for i in DF['Val']:
        if i > 1:
            a.append(a[-1] + 1)
        else:
            a.append(a[-1])
>>> a.pop(0)  # remove 1st 0 which does not correspond to any rows
>>> DF['Group'] = a
>>> DF
        Val  Group
0     134.0      1
1       NaN      1
2       NaN      1
3       NaN      1
4  129374.0      2
5       NaN      2
6       NaN      2
7      12.0      3
8       NaN      3
用于标识非NaN值。然后使用创建
列:

import pandas as pd

df = pd.DataFrame([134, None, None, None, 129374, None, None, 12, None],
                  columns=['Val'])
df['Group'] = pd.notnull(df['Val']).cumsum()
print(df)
屈服

        Val  Group
0     134.0      1
1       NaN      1
2       NaN      1
3       NaN      1
4  129374.0      2
5       NaN      2
6       NaN      2
7      12.0      3
8       NaN      3
用于标识非NaN值。然后使用创建
列:

import pandas as pd

df = pd.DataFrame([134, None, None, None, 129374, None, None, 12, None],
                  columns=['Val'])
df['Group'] = pd.notnull(df['Val']).cumsum()
print(df)
屈服

        Val  Group
0     134.0      1
1       NaN      1
2       NaN      1
3       NaN      1
4  129374.0      2
5       NaN      2
6       NaN      2
7      12.0      3
8       NaN      3