python - 识别具有相同值的下一行并创建新列 pandas 数据框

标签 python pandas loops dataframe iterator

我有以下数据框:

import pandas as pd

# create simple dataset of people
data_pandas = pd.DataFrame({'Order': [1, 1, 1,1,2,2,2],
                             'X': [30,44,30,44,44,30,44],
                             'Y': [46,46,35,45,90,60,60]})

我想使用以下逻辑创建一个新列“Z”: 识别具有相同“X”值的下一行,并根据“订单”列使用该行的“Y”值创建新的“Z”列。

输出看起来像这样

data_pandas_result = pd.DataFrame({
        'Order': [1, 1, 1,1,2,2,2],
        'X': [30,44,30,44,44,30,44],
        'Y': [46,46,35,45,90,60,60],
        'Z': [35,45,NA,NA,60,NA,NA]})

如何有效地做到这一点?我可以考虑根据顺序对数据框进行子集化并找到相关的匹配

最佳答案

根据您的逻辑,groupby + shift

df['Z']=df.groupby(['Order','X']).Y.shift(-1)
df
Out[327]: 
   Order   X   Y        Z
0      1  30  46 35.00000
1      1  44  46 45.00000
2      1  30  35      nan
3      1  44  45      nan
4      2  44  90 60.00000
5      2  30  60      nan
6      2  44  60      nan

关于python - 识别具有相同值的下一行并创建新列 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55153444/

相关文章:

java - 循环内声明的数组在循环外无法识别

Python 请求。 403 禁止

python - 如何在不覆盖 Excel 中的第一行的情况下将标题添加到数据框(使用 ".parse"从 excel 创建)

python - Pandas 删除每行中部分完成数据的重复项并合并数据

python - 删除反向重复项

c - 迭代结构体中的 char 指针

python - 为什么这个循环不能正常运行?

python - 导入错误 : No module named flask. 分机存储

python - 在 Python 中测试变量类型

c# - "No module named fcntl"当 py 脚本从 c# 运行但从 Windows 命令行运行时