Skip to main content
 首页 » 编程设计

python之计算列中的唯一值

2025年05月04日21haluo1

我有一个 df,它有一列,每行有多个逗号分隔值。我想计算唯一值在该列中出现的次数。

df 看起来像这样:

                             category  country 
0  widget1, widget2, widget3, widget4      USA 
1                    widget1, widget3      USA 
2                   widget1, widget2     China 
3                             widget2   Canada 
4           widget1, widget2, widget3    China 
5                             widget2  Vietnam 
6                             widget3   Canada 
7                    widget1, widget3      USA 
8                    widget1, widget3    Japan 
9                             widget2  Germany  

我想知道每个小部件在“类别”列中出现了多少次。此示例中的结果将是:

小部件 1 = 6,小部件 2 = 6,小部件 3 = 6,小部件 4 = 1

我可以使用 .value_counts

df["category"].value_counts() 

但这只会返回完全相同的行。

我可以使用 value_counts 并输入每个值以进行计数,但在实际的 DataFrame 中,该列中的行和唯一值太多,使其不实用。

另外,如果一行包含两个相同的值,有没有办法不重复计算?例如,同一行中有一个“widget1,黑色 widget1,黄色 widget1”,我只想将其计为一个 widget1。

请您参考如下方法:

使用get_dummies

df.category.str.get_dummies(',').replace(0,np.nan).stack().sum(level=1)