首页 > 解决方案 > 如何创建一个填充有最小值和最大值的新 DataFrame?

问题描述

我有以下数据集...

https://drive.google.com/open?id=1PpI6PlO8ox2vKfM4aGmEUexCPPWa59S_

如何创建一个新的 DataFrame,其中第一列是唯一的社区名称,接下来的两列填充每个社区的最低和最高价格?

标签: pythonpandas

解决方案


您可以按主机分组并获得最大值和最小值,如下所示:

>>> data = pd.read_csv('dumbbell_data.csv')
>>> pd.DataFrame([[value.maxPrice.max(), value.minPrice.min(), key] for key, value in data.groupby('neighbourhood_hosts')], columns=data.columns)
   maxPrice  minPrice neighbourhood_hosts
0        45        45          Bloomsbury
1       247       117           Canonbury
2       112        72             Chelsea
3       160        29        LB of Barnet
4        80        72       LB of Hackney
5       321        58     Shepherd's Bush
6        72        55          Shoreditch
7       115        72             Wapping
8       120        58           Wimbledon

一种更 Pythonic 的方式是使用agg函数:

>>> data.sort_values(by='neighbourhood_hosts').groupby('neighbourhood_hosts').agg({'maxPrice': max, 'minPrice':min})
                     maxPrice  minPrice
neighbourhood_hosts                    
Bloomsbury                 45        45
Canonbury                 247       117
Chelsea                   112        72
LB of Barnet              160        29
LB of Hackney              80        72
Shepherd's Bush           321        58
Shoreditch                 72        55
Wapping                   115        72
Wimbledon                 120        58

推荐阅读