如何在一组pandas Dataframe中设置所有值的联合?

时间:2017-01-31 10:21:07

标签: python pandas

数据框的前两行df

0|50331648|{1,2,3,4,5}|6  
1|50331649|{3,5,7,8}|2  

执行操作后,我只需要一个包含{1,2,3,4,5,7,8}的集合。

如何实现它?

1 个答案:

答案 0 :(得分:5)

假设"B"是要考虑的列名,您可以在获取的解压缩列表中使用set.union

set.union(*df['B'].tolist())
{1, 2, 3, 4, 5, 7, 8}

(OR)

将这些作为可调用函数提供给reduce

from functools import reduce      # If you're on Py3k
reduce(set.union, df['B'].tolist())
{1, 2, 3, 4, 5, 7, 8}

<强> 数据:

df = pd.DataFrame(dict(A=[50331648, 50331649],
                       B=[{1,2,3,4,5}, {3,5,7,8}],
                       C=[6,2])
                 )

enter image description here