python - 有没有办法根据现有列的当前和前一行值在每行的新列中分配增量值的数量?
问题描述
我有一个数据框 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 = 新的递增数字
输入数据框将如下所示
我的期望输出是这个
解决方案
看这个片段,不要忘记处理第一个项目。从 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 模块。
推荐阅读
- javascript - 在每次按下输入时继续创建新的子元素
- python - 无法让 pyftpdlib 在本地网络上工作
- sql-server - 重新启动 SQL Server(或服务器)时,不会保留使用 net use 配置网络共享以进行访问
- regex - 正则表达式仅替换记事本++中的第一次出现
- html - 我的项目中有“两个引号”的问题
- jquery - Jquery 在回发后停止工作 - 需要带有 find() 选择器的委托
- makefile - 在制作目标之前运行设置并在之后“最终”运行?
- azure-devops - 将构建工件与 Nexus 存储库相关联
- html - 句子中间的断字 - Material UI
- python-3.x - 如何使用 python api 对批量输入进行 TensorRT 7.0 推理?