【问题标题】:Count number of times each item in list occurs in a pandas dataframe column with comma separates vales计算列表中每个项目出现在 pandas 数据框列中的次数,用逗号分隔值
【发布时间】:2020-09-27 00:57:28
【问题描述】:

我有一个清单:

citylist = ['New York', 'San Francisco', 'Los Angeles', 'Chicago', 'Miami']

和具有这些值的熊猫数据框 df1

first   last            city                                email
John    Travis          New York                            a@email.com
Jim     Perterson       San Franciso, Los Angeles           b@email.com
Nancy   Travis          Chicago                             b1@email.com
Jake    Templeton       Los Angeles                         b3@email.com
John    Myers           New York                            b4@email.com
Peter   Johnson         San Franciso, Chicago               b5@email.com
Aby     Peters          Los Angeles                         b6@email.com
Amy     Thomas          San Franciso                        b7@email.com
Jessica Thompson        Los Angeles, Chicago, New York      b8@email.com

我想计算 citylist 中每个城市在数据框列“city”中出现的次数:

New York        3       
San Francisco   3
Los Angeles     4
Chicago         3
Miami           0

目前我有

dftest = df1.groupby(by='city', as_index=False).agg({'id': pd.Series.nunique})

最后将“洛杉矶、芝加哥、纽约”计为 1 个唯一值

有没有办法像我上面展示的那样获得计数? 谢谢

【问题讨论】:

    标签: pandas dataframe csv grouping


    【解决方案1】:

    试试这个:

    先修复数据:

    df1['city'] = df1['city'].str.replace('Franciso', 'Francisco')
    

    使用这个:

    (df1['city'].str.split(', ')
                .explode()
                .value_counts(sort=False)
                .reindex(citylist, fill_value=0))
    

    输出:

    New York         3
    San Francisco    3
    Los Angeles      4
    Chicago          3
    Miami            0
    Name: city, dtype: int64
    

    【讨论】:

      【解决方案2】:

      你可以使用Series.str.count:

      pd.Series([df['city'].str.count(c).sum() for c in citylist], index=citylist)
      

      @ScottBoston 建议的另一种更有效的方法

      pd.Series({c:sum(c in i for i in df['city']) for c in citylist})
      

      New York         3
      San Francisco    0
      Los Angeles      4
      Chicago          3
      Miami            0
      dtype: int64
      

      【讨论】:

        猜你喜欢
        • 2022-01-10
        • 2021-01-14
        • 1970-01-01
        • 1970-01-01
        • 2018-05-02
        • 2021-10-09
        • 2021-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多