gpt4 book ai didi

python - 计算到具有特定值的行的距离

转载 作者:太空狗 更新时间:2023-10-30 02:01:11 28 4
gpt4 key购买 nike

我正在使用 pandas 处理数据,其中维护工作是在某个位置完成的。每个站点每四年进行一次维护。我想找到自每个站点上次维护操作以来的年份。在下面的示例中,我只给出了两个站点,但在原始数据集中,我有数千个站点。我的数据只涵盖 2014 年到 2017 年。

Action = 0 表示当年没有执行任何操作,Action = 1 表示已执行某些操作。测量是与行动效果相关的性能读数。该行动可以发生在任何一年。我知道如果在 Y 年执行了该操作,则之前的维护已在 Y-4 年执行。

 Site  Year   Action  Measurement
A 2014 0 100
A 2015 0 150
A 2016 1 300
A 2017 0 80
B 2014 0 200
B 2015 1 250
B 2016 0 60
B 2017 0 110

给定这个数据集;首先,我想要一个这样的临时数据集:

 Item  Year   Action  Measurement  Years_Since_Last_Action
A 2014 0 100 2
A 2015 0 150 3
A 2016 1 300 4
A 2017 0 80 1
B 2014 0 200 3
B 2015 1 250 4
B 2016 0 60 1
B 2017 0 110 2

然后,我想要:

Years_Since_Last_Action         Mean_Measurement
1 70
2 105
3 175
4 275

提前致谢!

最佳答案

你的第一个问题

s=df.loc[df.Action==1,['Site','Year']].set_index('Site') # get all year have the action and map back to the whole dataframe
df['Newyear']=df.Site.map(s.Year)
s1=df.Year-df.Newyear
df['action since last year']=np.where(s1<=0,s1+4,s1)# using np.where get the condition
df
Out[167]:
Site Year Action Measurement Newyear action since last year
0 A 2014 0 100 2016 2
1 A 2015 0 150 2016 3
2 A 2016 1 300 2016 4
3 A 2017 0 80 2016 1
4 B 2014 0 200 2015 3
5 B 2015 1 250 2015 4
6 B 2016 0 60 2015 1
7 B 2017 0 110 2015 2

第二个问题

df.groupby('action since last year').Measurement.mean()
Out[168]:
action since last year
1 70
2 105
3 175
4 275
Name: Measurement, dtype: int64

关于python - 计算到具有特定值的行的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52470675/

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