[英]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.