首页 > 解决方案 > 有没有办法根据现有列的当前和前一行值在每行的新列中分配增量值的数量?

问题描述

我有一个数据框 df ,我想根据另一列的当前行和上一行在新列中添加增量 ID 号。

data = [{'X': 6, 'Y': 1}, {'X': 6, 'Y': 1}, {'X': 7, 'Y': 0}, {'X': 7, 'Y': 0},
        {'X': 6, 'Y': 1}, {'X': 7, 'Y': 1}, {'X': 7, 'Y': 0}, {'X': 7, 'Y': 1} ] 

df = pd.DataFrame(data)

现在是这个条件,

如果当前 X = 上一个 X & 当前 Y <> 上一个 Y,

然后 ID_Number = 新的递增数字

或者

如果当前 X <> 上一个 X & 当前 Y = 上一个 Y,

然后 ID_Number = 新的递增数字

或者

如果当前 X = 上一个 X & 当前 Y = 上一个 Y,

那么 ID_Number = 与之前的 ID_Number 相同

或者

如果当前 X <> 上一个 X & 当前 Y <> 上一个 Y,

然后 ID_Number = 新的递增数字

输入数据框将如下所示

在此处输入图像描述

我的期望输出是这个

在此处输入图像描述

标签: pythonpandas

解决方案


看这个片段,不要忘记处理第一个项目。从 ipython 复制粘贴。

In [10]: id_ =1  
In [11]: for first, second in zip(data, data[1:]): 
    ...:     if first != second: 
    ...:         id_ += 1 
    ...:     print(f'{id_} {second}') 
    ...:      
    ...:                              

有关更多信息,请参见 itertools 模块。


推荐阅读