![](/img/trans.png)
[英]How do I count only unique values with groupby using pandas/python?
[英]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.