python - Pandas 数据框中列中最接近的不相等行

标签 python pandas

我有这个df

d={}
d['id']=['1','1','1','1','1','1','1','1','2','2','2','2','2','2','2','2']
d['qty']=[5,5,5,5,5,6,5,5,1,1,2,2,2,3,5,8]

我想创建一个列,该列的 qty 列的值将不相等。这意味着如果 qty 等于 5 并且它的下一行是 5,我将跳过它并查找,直到找到下一个值不等于 5,在我的情况下它是 6。所有这些都应该按id分组

这是所需的数据框。

d['id']=['1','1','1','1','1','1','1','1','2','2','2','2','2','2','2','2']
d['qty']=[5,5,5,5,5,6,5,5,1,1,2,2,2,3,5,8]
d['qty2']=[6,6,6,6,6,5,'NAN','NAN',2,2,3,3,3,5,8,'NAN']

非常感谢任何帮助

最佳答案

您可以groupby.shift ,屏蔽相同的值,并且 groupby.bfill :

# shift up per group
s = df.groupby('id')['qty'].shift(-1)

# keep only the different values and bfill per group
df['qty2'] = s.where(df['qty'].ne(s)).groupby(df['id']).bfill()

输出:

   id  qty  qty2
0   1    5   6.0
1   1    5   6.0
2   1    5   6.0
3   1    5   6.0
4   1    5   6.0
5   1    6   5.0
6   1    5   NaN
7   1    5   NaN
8   2    1   2.0
9   2    1   2.0
10  2    2   3.0
11  2    2   3.0
12  2    2   3.0
13  2    3   5.0
14  2    5   8.0
15  2    8   NaN

关于python - Pandas 数据框中列中最接近的不相等行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73700639/

相关文章:

python - 如何拆分数据框并将其存储在 Excel 文件的多个工作表中

Python检查所有空列表中的条件

python - 如何在python上获取子链接

python - 预训练模型所需的标准化 (PyTorch)

python - 如何将背景颜色添加到 pandas 数据框的特定列并将该彩色数据框保存到同一个 csv 中?

python - Pandas df.resample() : Specify NaN threshold for calculation of mean

python - Django: AttributeError: 'NoneType' 对象没有属性 'split'

python - 访问 python dateutil relativedelta 值

python - 如何在 Pandas 中找到重复项?

python - 用 Pandas 连接两列