大熊猫如何获取当前连续数的正数?

在Python Pandas中,我有一个数据框,其中包含以下格式的列和记录:

In [7]: d = {'x' : [1,-1,1,1,-1,1,1,1,-1,1,1,1,1,-1,1,1,1,1,1]}

In [8]: df = pd.DataFrame(d)

In [9]: df
Out[9]:
    x
0   1
1  -1
2   1
3   1
4  -1
5   1
6   1
7   1
8  -1
9   1
10  1
11  1
12  1
13 -1
14  1
15  1
16  1
17  1
18  1


如何获得当前的连续正数?

例如,我想要这样的结果(添加y列以表示连续的正数)

    x  y
0   1  1
1  -1  0
2   1  1
3   1  2
4  -1  0
5   1  1
6   1  2
7   1  3
8  -1  0
9   1  1
10  1  2
11  1  3
12  1  4
13 -1  0
14  1  1
15  1  2
16  1  3
17  1  4
18  1  5

最佳答案

尝试这个。另外,我使用的是1而不是1的随机混杂,这与您的数据不同:

          x
    0     1
    1    -1
    2     1
    3     1
    4     1
    5    -1
    6     1
    7     1
    8     1
    9     1
    10   -1


y = [] #Create a list outside a counter function

    def count(df):
        counter = 0
        for item in df:
            if item > 0:
                counter += 1
                y.append(counter)
            else:
                counter = 0
                y.append(counter)
        return y

count(df['x']) #run function

df['y'] = y #add column based on list


      y
0     1
1     0
2     1
3     2
4     3
5     0
6     1
7     2
8     3
9     4
10    0

关于python - Pandas 如何获取当前连续数的正数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44103740/

10-12 18:44