微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获得上一年的中位数价格?

如何解决如何获得上一年的中位数价格?

鉴于以下数据,如何获得上一年的中位数平方米价格?

  city_code createdYear squaremeterPrice squaremeterPrice_grouped_city_for_the_current_year
0   26      2014            33273        39632.0
1   26      2014            37500        39632.0
2   26      2014            47428        39632.0
3   26      2014            39554        39632.0
4   26      2014            38893        39632.0
5   26      2013            34231        28841.0
6   26      2014            34344        39632.0
7   26      2014            44574        39632.0
8   26      2014            25202        39632.0
9   26      2014            39632        39632.0
10  26      2014            44504        39632.0
11  26      2013            23451        28841.0
...

为了获得平方,我使用了以下代码:Price_grouped_city_for_the_current_year

# adding the yearly average sqm price
median_squaremeterPrice_per_city = df.groupby(["city_code"])["squaremeterPrice"].median().to_frame("squaremeterPrice_grouped_city_for_the_current_year").reset_index()
df = df.merge(median_squaremeterPrice_per_city,left_on=["city_code"],right_on=["city_code"])
df

我们的预期输出如下:

  city_code createdYear squaremeterPrice squaremeterPrice_grouped_city_for_the_current_year   squaremeterPrice_grouped_city_for_1_year_prior
0   26      2014            33273        39632.0      28841.0
1   26      2014            37500        39632.0      28841.0
2   26      2014            47428        39632.0      28841.0
3   26      2014            39554        39632.0      28841.0
4   26      2014            38893        39632.0      28841.0
5   26      2013            34231        28841.0      whatever was the 2012 price
6   26      2014            34344        39632.0      28841.0
7   26      2014            44574        39632.0      28841.0
8   26      2014            25202        39632.0      28841.0
9   26      2014            39632        39632.0      28841.0
10  26      2014            44504        39632.0      28841.0
11  26      2013            23451        28841.0      whatever was the 2012 price
... 

解决方法

相反,您的解决方案按city_codecreatedYear列与median进行分组,并为上一年在1的年份中添加MultiIndex,最后使用{{ 3}}中的新列:

median_squaremeterPrice_per_city_and_year = (df.groupby(["city_code","createdYear"])["squaremeterPrice"]
                                               .median()
                                               .rename('squaremeterPrice_grouped_city_for_the_current_year'))
median_squaremeterPrice_per_city_and__prev_year =( median_squaremeterPrice_per_city_and_year
                                                   .rename(lambda x: x+1,level=1)
                                                   .rename('squaremeterPrice_grouped_city_for_the_prev_year'))

print (median_squaremeterPrice_per_city_and__prev_year)

df1 = (df.join(median_squaremeterPrice_per_city_and_year,on=['city_code','createdYear'])
         .join(median_squaremeterPrice_per_city_and__prev_year,'createdYear']))

print (df1)
    city_code  createdYear  squaremeterPrice  \
0          26         2014             33273   
1          26         2014             37500   
2          26         2014             47428   
3          26         2014             39554   
4          26         2014             38893   
5          26         2013             34231   
6          26         2014             34344   
7          26         2014             44574   
8          26         2014             25202   
9          26         2014             39632   
10         26         2014             44504   
11         26         2013             23451   

    squaremeterPrice_grouped_city_for_the_current_year  \
0                                             39223.5    
1                                             39223.5    
2                                             39223.5    
3                                             39223.5    
4                                             39223.5    
5                                             28841.0    
6                                             39223.5    
7                                             39223.5    
8                                             39223.5    
9                                             39223.5    
10                                            39223.5    
11                                            28841.0    

    squaremeterPrice_grouped_city_for_the_prev_year  
0                                           28841.0  
1                                           28841.0  
2                                           28841.0  
3                                           28841.0  
4                                           28841.0  
5                                               NaN  
6                                           28841.0  
7                                           28841.0  
8                                           28841.0  
9                                           28841.0  
10                                          28841.0  
11                                              NaN  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。