我有一个 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)
