计算 pandas 数据框列中唯一项的数量
Count number of unique items in a pandas dataframe column
假设我有一个数据框,例如
import pandas as pd
df = pd.DataFrame({'ProductList':[["ABC", "ABC", "CDE", "CDF"],
["CDE", "XYZ", "XYZ"],
["UGH", "ABC", "CDE", "ABC"]],
'Customer': ['John', 'Alex', 'Mary']})
df
ProductList Customer
0 [ABC, ABC, CDE, CDF] John
1 [CDE, XYZ, XYZ] Alex
2 [UGH, ABC, CDE, ABC] Mary
我的问题是如何计算 ProductList 列中唯一项的数量。根据这个玩具数据,应该有 5 个独特的物品,分别是 'ABC'、'CDE'、'CDF'、'XYZ'、& 'UGH'.
我正在考虑使用 'set' 将 # 个独特的项目放入一个集合中,然后计算这个大集合的长度。但不确定该怎么做。有什么建议么?谢谢
一个快速的选择是:explode
+ nunique
:
df.ProductList.explode().nunique()
# 5
>>> import pandas as pd
>>> df = pd.DataFrame({'ProductList':[["ABC", "ABC", "CDE", "CDF"],
... ["CDE", "XYZ", "XYZ"],
... ["UGH", "ABC", "CDE", "ABC"]],
... 'Customer': ['John', 'Alex', 'Mary']})
>>> print(df["ProductList"].values.tolist())
[['ABC', 'ABC', 'CDE', 'CDF'], ['CDE', 'XYZ', 'XYZ'], ['UGH', 'ABC', 'CDE', 'ABC']]
>>> import itertools
>>> a = df["ProductList"].values.tolist()
>>> print(list(itertools.chain.from_iterable(a)))
['ABC', 'ABC', 'CDE', 'CDF', 'CDE', 'XYZ', 'XYZ', 'UGH', 'ABC', 'CDE', 'ABC']
>>> print(set(list(itertools.chain.from_iterable(a))))
{'XYZ', 'CDF', 'UGH', 'CDE', 'ABC'}
假设我有一个数据框,例如
import pandas as pd
df = pd.DataFrame({'ProductList':[["ABC", "ABC", "CDE", "CDF"],
["CDE", "XYZ", "XYZ"],
["UGH", "ABC", "CDE", "ABC"]],
'Customer': ['John', 'Alex', 'Mary']})
df
ProductList Customer
0 [ABC, ABC, CDE, CDF] John
1 [CDE, XYZ, XYZ] Alex
2 [UGH, ABC, CDE, ABC] Mary
我的问题是如何计算 ProductList 列中唯一项的数量。根据这个玩具数据,应该有 5 个独特的物品,分别是 'ABC'、'CDE'、'CDF'、'XYZ'、& 'UGH'.
我正在考虑使用 'set' 将 # 个独特的项目放入一个集合中,然后计算这个大集合的长度。但不确定该怎么做。有什么建议么?谢谢
一个快速的选择是:explode
+ nunique
:
df.ProductList.explode().nunique()
# 5
>>> import pandas as pd
>>> df = pd.DataFrame({'ProductList':[["ABC", "ABC", "CDE", "CDF"],
... ["CDE", "XYZ", "XYZ"],
... ["UGH", "ABC", "CDE", "ABC"]],
... 'Customer': ['John', 'Alex', 'Mary']})
>>> print(df["ProductList"].values.tolist())
[['ABC', 'ABC', 'CDE', 'CDF'], ['CDE', 'XYZ', 'XYZ'], ['UGH', 'ABC', 'CDE', 'ABC']]
>>> import itertools
>>> a = df["ProductList"].values.tolist()
>>> print(list(itertools.chain.from_iterable(a)))
['ABC', 'ABC', 'CDE', 'CDF', 'CDE', 'XYZ', 'XYZ', 'UGH', 'ABC', 'CDE', 'ABC']
>>> print(set(list(itertools.chain.from_iterable(a))))
{'XYZ', 'CDF', 'UGH', 'CDE', 'ABC'}