Python 熊猫:聚合列的值

Python 熊猫:聚合列的值,python,python-3.x,pandas,aggregate,Python,Python 3.x,Pandas,Aggregate,我有以下数据框: name pet ---------------- John ['cat'] Mary ['cat','dog','bird'] Ann ['bird','rat'] Dave ['cow','dog'] 对于每个人,pet列是动物列表。我需要得到所有宠物的最终列表(无重复): 是否有一种更优雅的方法来实现这一点(例如,天真地逐行循环数据帧)?您可以使用tolist函数获取所有值的列表,使用itertools.chain将其

我有以下数据框:

name      pet
----------------
John      ['cat']
Mary      ['cat','dog','bird']
Ann       ['bird','rat']
Dave      ['cow','dog']
对于每个人,
pet
列是动物列表。我需要得到所有宠物的最终列表(无重复):


是否有一种更优雅的方法来实现这一点(例如,天真地逐行循环数据帧)?

您可以使用
tolist
函数获取所有值的列表,使用
itertools.chain
将其展平,然后转换为
,以获得唯一值:

import itertools

dfList = df['pet'].tolist()
final_list = list(set(itertools.chain.from_iterable(dfList)))

您也可以简单地使用熊猫并执行以下操作:

df.pet.unique() 

您也可以在列表理解中这样做(尽管@ukemi的方法更优雅):


这不适用于包含列表作为其值的列。
print(final_list)
>>> ['cat', 'dog', 'bird', 'rat', 'cow']
df.pet.unique() 
>>> [i for i in set(df.pet.apply(pd.Series).values.flatten().tolist()) if type(i) == str]
['cat', 'bird', 'cow', 'dog', 'rat']