【问题标题】:How do I count the number of unique values in a csv using Python如何使用 Python 计算 csv 中唯一值的数量
【发布时间】:2021-07-29 01:11:41
【问题描述】:

也许有人可以发布另一个已经对我的问题有答案的问题,但我一直找不到。

我的数据集是一个 10,000 多行的 csv,如下所示:

    col_1          col_2
   a, b, c, d       9 
   a, b, c          3
   b, d             5
   a, c, e          1

我想知道如何遍历 col_1 以提取每个字母,然后计算 col_2 的数量(如果出现)。

所以对于这个例子,输出将是:

a - 13
b - 17
c - 13
d - 14
e - 1

【问题讨论】:

    标签: python python-3.x pandas for-loop iteration


    【解决方案1】:

    得到假人,乘然后求和:

    df['col_1'].str.get_dummies(",").mul(df['col_2'],axis=0).sum()
    

    a    13
    b    17
    c    13
    d    14
    e     1
    dtype: int64
    

    【讨论】:

    • 有趣的解决方案。赞成。看看get_dummies() 是否应该传递', ' 并多留一个空格?
    • @SeaBean 谢谢 :) ,对于逗号后有空格的人来说,这是一个宝贵的建议。我假设问题是输入的,因此有额外的空格,但总体思路保持不变。
    【解决方案2】:

    尝试splitexplode 然后groupby

    df.assign(col_1 = df['col_1'].str.split(', ')).explode('col_1').groupby('col_1')['col_2'].sum()
    Out[172]: 
    col_1
    a    13
    b    17
    c    13
    d    14
    e     1
    Name: col_2, dtype: int64
    

    【讨论】:

      【解决方案3】:
      out = (
          df.assign(
              col_1=df["col_1"].apply(lambda x: list(map(str.strip, x.split(","))))
          )
          .explode("col_1")
          .groupby("col_1")
          .sum()
      )
      print(out)
      

      打印:

             col_2
      col_1       
      a         13
      b         17
      c         13
      d         14
      e          1
      

      【讨论】:

      • 这个对我来说很完美。谢谢!
      【解决方案4】:

      根据您在问题中所展示的内容,我假设您已经拥有df 中的数据

      Split 逗号上的字符串和explode 列表,最后调用value_counts

      df['col1'].str.split(',').explode().value_counts()
      

      样品运行

      df = pd.DataFrame({'col1': ['a,b,c',  'a,b', 'b,c']})
      df['col1'].str.split(',').explode().value_counts()
      Out[82]: 
      b    3
      c    2
      a    2
      Name: col1, dtype: int64
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-20
        • 1970-01-01
        • 2016-01-23
        • 1970-01-01
        • 1970-01-01
        • 2018-06-17
        • 2021-09-10
        • 1970-01-01
        相关资源
        最近更新 更多