【问题标题】:sum occurrences of a string in pandas dataframe总结熊猫数据框中字符串的出现次数
【发布时间】:2018-09-22 23:18:36
【问题描述】:

我必须对数据框进行计数和总计,但有一个条件:

fruit days_old
apple 4
apple 5
orange 1
orange 5

我必须以水果超过 3 天为条件来计算。所以我需要的输出是

2 个苹果和 1 个橙子

我以为我必须使用应用函数,但我必须将每种水果类型保存到变量或其他东西中。我相信有更简单的方法。

ps。我一直在寻找,但我没有看到一种清晰的方法来在这里创建具有适当间距的表格。唯一清楚的是不要使用标签复制和粘贴!

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

我想参加变体派对。

pd.factorize + np.bincount

f, u = pd.factorize(df.fruit)
pd.Series(
    np.bincount(f, df.days_old > 3).astype(int), u
)

apple     2
orange    1
dtype: int64

【讨论】:

    【解决方案2】:

    @jpp 和@chrisz 描述的value_counts() 方法很棒。只是为了发布另一个策略,您可以使用groupby

    df[df.days_old > 3].groupby('fruit').size()
    
    # fruit
    # apple     2
    # orange    1
    # dtype: int64
    

    【讨论】:

      【解决方案3】:

      你可以使用value_counts():

      In [120]: df[df.days_old > 3]['fruit'].value_counts()
      Out[120]:
      apple     2
      orange    1
      Name: fruit, dtype: int64
      

      【讨论】:

        【解决方案4】:

        一种方法是使用pd.Series.value_counts:

        res = df.loc[df['days_old'] > 3, 'fruit'].value_counts()
        
        # apple     2
        # orange    1
        # Name: fruit, dtype: int64
        

        不建议使用pd.DataFrame.apply,因为这会导致循环效率低下。

        【讨论】:

        • 所有很好的答案,谢谢。我知道如何数数,但不知道在哪里放置条件。干杯!
        猜你喜欢
        • 2013-07-16
        • 2022-06-23
        • 2019-07-09
        • 2018-04-04
        • 1970-01-01
        • 1970-01-01
        • 2018-03-12
        • 2017-02-24
        • 2022-11-24
        相关资源
        最近更新 更多