gpt4 book ai didi

python - Pandas :群体之间的差异

转载 作者:行者123 更新时间:2023-12-01 01:30:57 25 4
gpt4 key购买 nike

嗨,我有一个 panda df,如下所示(不是真实数据)

index   datedjourney   sequence   values
1 1 1 120
2 1 1 100
3 1 2 75
4 1 3 50
5 1 3 30
6 1 3 61
7 1 4 40
8 1 4 50
9 2 1 86
10 2 1 40
11 2 2 70

如果我按日期旅程和这样的顺序进行分组

df.groupby(['datedjourney', 'sequence'])['values']

我想计算分组中最后一行与第二组中第一行之间的差异,因此 df 如下所示

index      datedjourney   sequence   values    diff_between_groups
1 1 1 120 NaN
2 1 1 100 NaN
3 1 2 75 -25
4 1 3 50 -25
5 1 3 30 NaN
6 1 3 61 NaN
7 1 4 40 -21
8 1 4 50 NaN
9 2 1 86 NaN
10 2 1 40 NaN
11 2 2 70 30.

因此,应计算第 2 行和第 3 行的值,并将差异存储在第 3 行的新列 diff_ Between_groups 中。然后是第 3 行和第 4 行之间的差异等。不想计算第 8 行和第 9 行之间的差异,因为这是一个新的datedjourney

最佳答案

创建一个“diff_ Between_groups”列,它是“值”和移动一行的“值”之间的差异。

创建一个 bool 掩码来查找“datedjourney”与上面的行相同且“sequence”不同的行。

使用 pandas Series where 函数使用掩码替换“diff_ Between_groups”值。

df = pd.DataFrame({'index': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
'datedjourney': [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2],
'sequence': [1, 1, 2, 3, 3, 3, 4, 4, 1, 1, 2],
'values': [120, 100, 75, 50, 30, 61, 40, 50, 86, 40, 70]})

df['diff_between_groups'] = df['values'] - df['values'].shift()
mask = (df.datedjourney == df.datedjourney.shift()) & (df.sequence != df.sequence.shift())
df['diff_between_groups'] = df['diff_between_groups'].where(mask, np.nan)

print(df)

index datedjourney sequence values diff_between_groups
0 1 1 1 120 NaN
1 2 1 1 100 NaN
2 3 1 2 75 -25.0
3 4 1 3 50 -25.0
4 5 1 3 30 NaN
5 6 1 3 61 NaN
6 7 1 4 40 -21.0
7 8 1 4 50 NaN
8 9 2 1 86 NaN
9 10 2 1 40 NaN
10 11 2 2 70 30.0

关于python - Pandas :群体之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52873451/

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