gpt4 book ai didi

python - Pandas :根据条件计算特定日期以来时间序列的百分比变化

转载 作者:行者123 更新时间:2023-12-05 08:47:31 25 4
gpt4 key购买 nike

我正在努力寻找最有效的方法来完成以下任务。我有一个时间序列数据框。根据某些条件,我设置了一个 bool 列。之后,我想生成另一列,即上次出现该条件的百分比。因此,例如在下表中,第 2、4 和 5 行是第 1 行值的百分比。第 6、7 和 7 行是第 5 行的百分比变化。

row date        value  condition    pct_change_from_condition
1 04-27-2010 100 TRUE
2 04-28-2010 200 1.0
4 04-29-2010 300 2.0
5 04-30-2010 400 TRUE 3.0
6 05-01-2010 500 0.25
7 05-02-2010 600 0.5
8 05-03-2010 700 0.75

我知道我可以遍历行并执行此操作......但由于这是 Pandas ,我想要一种更“流行”且更有效的方式来执行此操作......我只是不确定如何在这里完成。感觉我需要像有条件的转变这样的东西:

df['pct_change_from_condition'] = (df.value - df.shift(df.condition).value)/df.value

或者可能使用 loc:

df['pct_change_from_condition'] = df.value - df.loc[df.condition].value 

当然这些都不起作用,所以我为什么在这里问...感谢您的帮助

最佳答案

你可以试试这个:

import numpy as np
import pandas as pd

mask = (df['condition'] == True)
df['group'] = mask.cumsum()
df['first'] = df.groupby(['group'])['value'].transform('first')
df['first'] = np.where(mask, df['first'].shift(), df['first'])
df['pct_change'] = (df['value']-df['first'])/df['first']

# Out[52]:
# 0 NaN
# 1 1.00
# 2 2.00
# 3 3.00
# 4 0.25
# 5 0.50
# 6 0.75
# Name: pct_change, dtype: float64

关于python - Pandas :根据条件计算特定日期以来时间序列的百分比变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67491542/

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