gpt4 book ai didi

python-3.x - Pandas 枢轴计算最大日期和第二个最大日期之间的差异

转载 作者:行者123 更新时间:2023-12-04 09:24:29 25 4
gpt4 key购买 nike

我有一种情况,我需要对数据进行透视,以便根据日期字段获取最近的和紧随其后的条目。我的数据框看起来像:

State   country      Date             confirmed deaths  recover
A C 1/22/20 1 0 0
A C 1/23/20 1 0 0
A C 1/24/20 15 0 0
A C 1/25/20 39 0 0
B C 1/26/20 60 0 0
B C 1/27/20 70 0 0
B C 1/28/20 106 0 0
B C 1/29/20 152 2 0
B C 1/30/20 200 2 0
我想要的输出应该是这样的:
所以新的列确认,死亡和恢复应该根据 Max(Date) 获取值,状态 A 为 1/25/20,状态 B 为 1/30/20
和 newcases , newdeaths, newrecover 应该是最大日期值的差异 - 第二到最大日期值。
For example for state A new cases = 39-15= 24, newdeaths = 0-0=0 , newrecover = 0-0=0
39 个案例在最大日期,24 个案例在最大日期的第二个,因为我需要获取每日更改。这应该是动态的,因为它需要每天获取
State   country   confirmed deaths  recover      newcases     newdeaths    newrecover
A C 39 0 0 24 0 0
B C 200 2 0 48 2 0

最佳答案

sort_values按日期升序和 groupby日期并提取每个组中的最后一个值。加入另一个 groupby 日期,从每个组中的最后一个值中减去第二个最后一个值。
链式解决方案

 df.groupby('State').tail(1).drop(columns=['Date']).merge(df.sort_values(by='Date', ascending=True).groupby('State')\
[['confirmed', 'deaths', 'recover']].apply(lambda s:(s.iloc[-1].sub(s.iloc[-2])))\
.reset_index().rename(columns={'confirmed':'newcases','deaths':\
'newdeaths','recover':'newrecover'}), how='left', on='State')
分步解决方案
g=df.groupby('State').tail(1).drop(columns=['Date'])

g1=df.sort_values(by='Date', ascending=True).groupby('State')\
[['confirmed', 'deaths', 'recover']].apply(lambda s:(s.iloc[-1].sub(s.iloc[-2])))\
.reset_index().rename(columns={'confirmed':'newcases','deaths':\
'newdeaths','recover':'newrecover'})


newdf=g.merge(g1, how='left', on='State')


State country confirmed deaths recover newcases newdeaths newrecover
0 A C 39 0 0 24 0 0
1 B C 200 2 0 48 0 0

newrecover
0 0
1 0

关于python-3.x - Pandas 枢轴计算最大日期和第二个最大日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63042511/

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