识别具有相同值的下一行并创建新的列熊猫数据框

Posted

技术标签:

【中文标题】识别具有相同值的下一行并创建新的列熊猫数据框【英文标题】:Identify next row with the same value and create new column pandas data frame 【发布时间】:2019-08-04 19:29:32 【问题描述】:

我有以下数据框:

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])

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

【问题讨论】:

【参考方案1】:

根据你的逻辑,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

【讨论】:

以上是关于识别具有相同值的下一行并创建新的列熊猫数据框的主要内容,如果未能解决你的问题,请参考以下文章

从列A数据框A到数据框B中的C的匹配值,并使用熊猫从数据框A创建不匹配的列表

Python:从数据框字符串列中提取维度数据并为每个列创建具有值的列

熊猫数据框:在固定其他列的列中提取具有特定标准/条件最小值的数据[重复]

pyspark:删除所有行中具有相同值的列

将分组的聚合唯一列添加到熊猫数据框

将列添加到具有恒定值的数据框