python - 根据条件对 Pandas 系列进行分组

标签 python pandas dataframe grouping

我有一个 Pandas df,其中一列具有以下值。

      Data
0      A
1      A 
2      B
3      A
4      A 
5      A
6      B
7      A
8      A
9      B

我想尝试对这些值进行分组,对于每次遇到值 B,我希望将组值更改如下
      Data  Group
0      A      1
1      A      1
2      B      1
3      A      2
4      A      2
5      A      2
6      B      2
7      A      3
8      A      3
9      B      3

如何使用内置的 Pandas 来实现这一点。以某种方式创建任何辅助列以促进上述任务。

最佳答案

你可以试试 cumsum 比较后是否系列equals B然后 shift将 B 包括在组中的 1 个位置:

df['Data'].eq('B').shift(fill_value=False).cumsum().add(1)
0    1
1    1
2    1
3    2
4    2
5    2
6    2
7    3
8    3
9    3

关于python - 根据条件对 Pandas 系列进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61305853/

相关文章:

pandas - 使用开始日期/结束日期在 Pandas 中构建时间序列数据框

python - 将前 n 个非 NaN 单元格保留在 pandas DataFrame 的每一行中

python - 使用 pandas 操作数据框

python - 总和平方根的化简

Python Pandas : How to optimally compare each value of a dictionary with all other values?

python - 从 Pandas 数据帧创建一个 json 对象

r - 从 r 中的数据框中删除每第 n 列

python - 是否可以在 TensorFlow 中重新输入现有名称范围?

python - elasticsearch-py连接池

python - 检查 Pandas 中是否存在所有 12 个月后,如何将月返回转换为年返回?