python - 拆分/分组 pandas 数据框列

标签 python pandas numpy split grouping

我有一个数据框,其中的一列填充有 1 和 0 组。如何为每个组指定从 1 开始的连续编号?

我尝试过跨行的 for 循环,但我需要列操作来提高性能。

d = {'col1': [1,1,1,0,0,1,1,0,0,0,1,1]}
df1 = pd.DataFrame(data=d)
df1

col1 0 1 1 1 2 1 3 0 4 0 5 1 6 1 7 0 8 0 9 0 10 1 11 1

我需要以下输出:

col1 col2 0 1 1 1 1 1 2 1 1 3 0 2 4 0 2 5 1 3 6 1 3 7 0 4 8 0 4 9 0 4 10 1 5 11 1 5

最佳答案

您可以比较移位值是否不相等,并通过 Series.cumsum 添加累积和。 :

df1['col2'] = df1['col1'].ne(df1['col1'].shift()).cumsum()
print (df1)
    col1  col2
0      1     1
1      1     1
2      1     1
3      0     2
4      0     2
5      1     3
6      1     3
7      0     4
8      0     4
9      0     4
10     1     5
11     1     5

关于python - 拆分/分组 pandas 数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54441902/

相关文章:

python - 隐藏操作而不禁用它

python - python获取另一个国家的当前日期

python - Anaconda 在 PyCharm 中不可用

python - 使用python连接到海康威视摄像头并打开cv

python - pandas dataframe - 从少于 X 行的组中删除值

Pandas 将多列堆叠成多列

python - Pandas DataFrame 切片与副本 : which one is more memory friendly?

python - 如果行(或列)中的所有值不满足给定条件,则删除对称数组中的行和列

python - 如何根据相邻元素之间的差异将列表拆分为列表列表?

python - 由于 "Environment error :[error 13]: permission denied : ' usr/local/bin/f2py' 无法安装软件包