【问题标题】:How do I create a new DataFrame filled with minimum and maximum values?如何创建一个填充有最小值和最大值的新 DataFrame?
【发布时间】:2019-05-31 16:38:34
【问题描述】:

我有以下数据集...

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

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

【问题讨论】:

  • 谢谢,但我仍然不知道如何使用该解决方案处理我的数据?
  • df.groupby('neighborhood')['price'].agg(['max','min']).
  • 如果我使用以下行...df.groupby('neighbourhood_hosts')['minPrice'].agg(['min', 'max']) 我没有得到正确的值对于 maxPrice 列
  • 这对我的帮助还不够,但感谢您的回复。

标签: python pandas


【解决方案1】:

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

>>> 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

【讨论】:

    猜你喜欢
    • 2017-01-20
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 2012-03-20
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多