python - 在 python、pandas 中保留

标签 python pandas

我有一个数据集,其中有一个值为 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 文档中没有看到任何保留函数。

提前致谢。

最佳答案

我认为你需要与 0cumsum 进行比较:

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/

相关文章:

python - 让两个 Python 脚本一起工作

python - 从 numpy 数组到 itk 图像

python - 如何解决 Azure CosmosDB 上仅在大数据集合上出现的查询问题?

jquery - AJAX 的 Django ORM 问题

python - Keras:指定始终保持某些特征的输入丢失层

python - 在安装期间运行自定义 setuptools build

python - 将包含元组的 DataFrame 列转换为行

python - Pandas groupby 和减去行

python - 无法将更大的 DataFrames 放入队列中

python - 展平多索引 Pandas 数据框,其中列名成为值