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']