假設我有一個資料框,例如
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”。
我正在考慮使用“集合”將#獨特專案放入一組,然后計算這個大集合的長度。但不知道該怎么做。有什么建議么?謝謝
uj5u.com熱心網友回復:
一個快速的選擇是:explode nunique:
df.ProductList.explode().nunique()
# 5
uj5u.com熱心網友回復:
>>> 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'}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479471.html
