gpt4 book ai didi

python - Pandas dataframe 连续列的差异与第一个值的比率

转载 作者:行者123 更新时间:2023-11-28 21:44:09 24 4
gpt4 key购买 nike

假设我有 DataFrame(称为 df)

'name'    'order'    'quantity'
'A' 1 10
'A' 2 15
'A' 3 5
'B' 1 2
'B' 2 6

我想要的是构建另一个数据框,其中包含一个列,该列具有连续列的差异(根据列 order 连续)与第一个值的比率。

我可以很容易地检索出上述比率(分子)的差异

def compute_diff(x):

quantity_diff = x.quantity.diff()

return quantity_diff

diff_df = df.sort_values('order').groupby('name').apply(compute_diff).reset_index(name='diff')

这给了我

'name'    'level_1'    'quantity'
'A' 0 NaN
'A' 1 5
'A' 1 -10
'B' 1 NaN
'B' 2 4

现在我想要的是比率,按照描述。具体来说,我想要

'name'    'level_1'    'quantity'
'A' 1 NaN
'A' 2 0.5
'A' 3 -0.6666
'B' 1 NaN
'B' 2 2

怎么做?

最佳答案

执行groupby后,使用pct_change:

# Sort the DataFrame, if necessary.
df = df.sort_values(['name', 'order'])

# Use groupby and pcnt_change on the 'quantity' column.
df['quantity'] = df.groupby('name')['quantity'].pct_change()

结果输出:

  name  order  quantity
0 A 1 NaN
1 A 2 0.500000
2 A 3 -0.666667
3 B 1 NaN
4 B 2 2.000000

关于python - Pandas dataframe 连续列的差异与第一个值的比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41131462/

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