gpt4 book ai didi

python - Pandas dataframe - 具有相同 ID 的数据增量

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:47 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

  type  unique_id  val
0 X 1 11
1 X 2 12
2 Y 1 20
3 Y 2 30

所需的输出是

  type  unique_id  val delta
0 X 1 11 9
1 X 2 12 18
2 Y 1 20 0
3 Y 2 30 0

也就是说,我想将每个 X 与具有相同 unique_id 的 Y 进行匹配(该 id 在 X 中是唯一的,并且在 Y 中分别是唯一的)。然后,我想计算每个 X 及其各自的 Y 行的 val 之差。对于 Y,该值可以为 0。

最佳答案

假设 unique_id 对于给定类型实际上是唯一的,您可以根据针对类型 Y 过滤的数据对其进行分组。

gb = df[df.type == 'Y'].groupby('unique_id').first()
>>> gb
type val
unique_id
1 Y 20
2 Y 30

然后将其连接到原始数据框:

df = (df.set_index('unique_id')
.join(gb, rsuffix='_'))
>>> df
type val type_ val_
unique_id
1 X 11 Y 20
1 Y 20 Y 20
2 X 12 Y 30
2 Y 30 Y 30

您现在可以计算增量:

df['delta'] = df.val_ - df.val

最后,将数据重新调整为您想要的形式:

df = (df.reset_index()
.sort('type')
.drop(['val_', 'type_'], axis='columns')

# Reorder columns.
>>> df[['type', 'unique_id', 'val', 'delta']]
type unique_id val delta
0 X 1 11 9
2 X 2 12 18
1 Y 1 20 0
3 Y 2 30 0

关于python - Pandas dataframe - 具有相同 ID 的数据增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33285769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com