【问题标题】:Using For loop in Pandas with groupby function在具有 groupby 功能的 Pandas 中使用 For 循环
【发布时间】:2017-12-07 17:09:56
【问题描述】:

unGrouped 是一个如下所示的数据框:

         date        borough
969609  01/01/2014       BROOKLYN
967983  01/01/2014          BRONX
967982  01/01/2014         QUEENS
865943  01/01/2014       BROOKLYN
967981  01/01/2014      MANHATTAN
967980  01/01/2014       BROOKLYN
967979  01/01/2014         QUEENS
967984  01/01/2014          BRONX
967978  01/01/2014         QUEENS
967976  01/01/2014       BROOKLYN
967975  01/01/2014       BROOKLYN

我有以下代码:

for row in unGrouped:
if unGrouped['borough'][row]=='BRONX':
    bronxCount+=1
    print bronxCount

它给了我一个关键错误:date。 我想遍历borough 列,每当遇到BRONX 时增加bronxCount,并将每一行的值存储在名为“bronxCount”的列中,最终获得布朗克斯区的犯罪计数每天。如果有人能让这个循环工作,我将不胜感激。谢谢您的帮助!

【问题讨论】:

  • 感谢这些很棒的建议!这些方法都计算了布朗克斯区的犯罪率,但我希望保留与事件相关的“日期”条目,这样我就可以绘制一年中犯罪的时间进程。这些使时间维度变平并仅给出总计数,而我希望每天获得计数(因此是初始循环)。有什么想法吗?

标签: python pandas loops for-loop


【解决方案1】:

过滤后可以总结:

>>> (unGrouped.borough == 'BRONX').sum()
2

要获得每个日期的计数,只需在计数前按日期和 boroug 分组:

>>> unGrouped.groupby(['date', 'borough']).size()
date        borough  
01/01/2014  BRONX        2
            BROOKLYN     5
            MANHATTAN    1
            QUEENS       3
dtype: int64

或者如果你只想要BRONX带有日期索引。

>>> unGrouped.groupby(['borough', 'date']).size().loc['BRONX']
date
01/01/2014    2
dtype: int64

【讨论】:

  • 就是这样! .loc 是缺少的键。非常感谢迈克
【解决方案2】:

通常,如果您使用 for 循环,您可能做错了!

您可能想要的是 groupby 和 count?

unGrouped.groupBy('borough').size()

【讨论】:

    【解决方案3】:

    使用values_counts:

    bronxCount = unGrouped.borough.value_counts()['BRONX']
    print(BronxCount)
    

    输出:

    2
    

    【讨论】:

      【解决方案4】:

      使用numpy

      v, n = np.unique(df.borough.values, return_counts=True)
      d=dict(zip(v, n))
      d['BRONX']
      Out[218]: 2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-18
        • 2016-08-28
        • 1970-01-01
        相关资源
        最近更新 更多