繁体   English   中英

如何使用 Python 计算 csv 中唯一值的数量

[英]How do I count the number of unique values in a csv using Python

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

我的数据集是一个 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 的数量(如果出现)。

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

a - 13
b - 17
c - 13
d - 14
e - 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

尝试用explode然后groupby split

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

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

用逗号Split字符串并value_counts列表,最后调用explode

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
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM