我有一个数据集,其中有一个值为 0,1 的变量。
我需要按以下方式输出。
变量 - 0 1 1 1 0 1 1 1 0 1 1 0
标志 - 1 1 1 1 2 2 2 2 3 3 3 4
每次变量变为 0 标志时应增加 1,并且应保持不变,直到遇到下一个 0。
我正在进行从 SAS 到 python 的代码转换。在 SAS 中这很容易,但我发现在 Pandas 中很难。 pandas 中是否有像 SAS 这样的特定保留函数?我在 pandas 文档中没有看到任何保留函数。
提前致谢。
最佳答案
我认为你需要与 0
和 cumsum
进行比较:
s = pd.Series([ 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0])
print (s)
0 0
1 1
2 1
3 1
4 0
5 1
6 1
7 1
8 0
9 1
10 1
11 0
dtype: int64
s1 = (s == 0).cumsum()
print (s1)
0 1
1 1
2 1
3 1
4 2
5 2
6 2
7 2
8 3
9 3
10 3
11 4
dtype: int32
df = pd.DataFrame({'Variable': [ 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0]})
df['Flag'] = (df.Variable == 0).cumsum()
print (df)
Variable Flag
0 0 1
1 1 1
2 1 1
3 1 1
4 0 2
5 1 2
6 1 2
7 1 2
8 0 3
9 1 3
10 1 3
11 0 4
关于python - 在 python、pandas 中保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41300492/