【问题标题】:Python Panda Dataframe Count Specific Values from ListPython Panda Dataframe 计算列表中的特定值
【发布时间】:2021-09-21 07:58:10
【问题描述】:

假设我有一个清单:

mylist = ['a','b','c']

还有一个 Pandas 数据框 (df),其中包含一个名为“rating”的列。 在迭代我的列表时如何获取评分的出现次数?例如,这是我需要的:

for item in myList
   # Do a bunch of stuff in here that takes a long time
   # want to do print statement below to show progress
   # print df['rating'].value_counts().a <- I can do this, 
   #     but want to use variable 'item'
   # print df['rating'].value_counts().item <- Or something like this

我知道我可以计算所有不同的“评分”值,但这不是我所追求的。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    如果您必须这样做,您可以使用.loc 过滤 df,然后再获取结果 df 的大小。

    mylist = ['a','b','c']
    df = pd.DataFrame({'rating':['a','a','b','c','c','c','d','e','f']})
    
    
    for item in mylist:
        print(item, df.loc[df['rating']==item].size)
    

    输出

    a 2
    b 1
    c 3
    

    【讨论】:

    • 谢谢,这是我需要的。引擎盖后面发生了很多我没有包括在内的事情,我的打印语句是一种进度捕获,因为每次迭代都可能需要很长时间。因此,我不想在我的数据框完成后获取所有内容(我每次都向其中添加记录)。
    【解决方案2】:

    与其把这个问题想成是“从列表到数据框”,不如把它翻转过来:

    mylist = ['a','b','c']
    df = pd.DataFrame({'rating':['a','a','b','c','c','c','d','e','f']})
    
    ValueCounts = df['rating'].value_counts()
    ValueCounts[ValueCounts.index.isin(mylist)]
    

    输出:

    c    3
    a    2
    b    1
    Name: rating, dtype: int64
    

    【讨论】:

      【解决方案3】:

      您甚至不需要 for 循环,只需这样做:

      df['rating'].value_counts()[mylist]
      

      或者把它变成字典:

      df['rating'].value_counts()[['a', 'b', 'c']].to_dict()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-22
        • 1970-01-01
        • 2017-04-03
        • 1970-01-01
        相关资源
        最近更新 更多