簡體   English   中英

Python:從列表內部提取列表並刪除重復項

[英]Python: Extract list from inside the list and remove duplicates

我有一個帶有一列的數據框,該列由列表的列表(長度可變)組成。 一個例子: df['east'][0]給出

[array(['Indonesia', 'New Zealand'], dtype=object), array(['Indonesia', 'New Zealand'], dtype=object)]

我想將列表合並到這個更大的列表中,並消除重復項,並確保清楚地顯示數據,即簡單地

['Indonesia', 'New Zealand']

從這里嘗試了一些建議來刪除重復項,但是,例如,對於np.unique(functools.reduce(operator.add, east)) Python說“ ValueError:操作數不能與形狀(4,)一起廣播(13 ,)”

我通常可以解決問題,但是在這里我不確定正在發生什么-列表中的這些數組是什么。

一種簡單的方法是使用理解力將列表/數組弄平,然后使用list(set())獲得列表中的唯一值:

df['east'].apply(lambda x: list(set(item for sublist in x for item in sublist)))
# example output: ['New Zealand', 'Indonesia']

您可以使用以下一種襯紙來實現您的結果。

df['east'].apply(lambda value: reduce(lambda a, x: list(set(list(a) + list(x))), value, []))

讓我們分解一下...

list(a) + list(x) =避免形狀錯誤並添加到列表以返回一個列表(如果保持形狀相同,則可以直接使用np數組的加法)

list(set(list(a) + list(x))) =所有唯一元素的數組,方法是先獲取它們的集合。

reduce(lambda a, x: list(set(list(a) + list(x))), value, [])) =遞歸添加累加器和變量列表以將其簡化為一個列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM