What I need:个
我有一个数据帧,其中列的元素是列表.列表中没有重复的元素.例如,如下所示的数据帧:
import pandas as pd
>>d = {'col1': [[1, 2, 4, 8], [15, 16, 17], [18, 3], [2, 19], [10, 4]]}
>>df = pd.DataFrame(data=d)
col1
0 [1, 2, 4, 8]
1 [15, 16, 17]
2 [18, 3]
3 [2, 19]
4 [10, 4]
我想要获得一个数据帧,其中,如果包含在第i
行的列表中的至少一个数字也包含在第j
行的列表中,则这两个列表被合并(没有重复).但是这些值也可以被两个以上的列表共享,在这种情况下,我希望所有共享至少一个值的列表都被合并.
col1
0 [1, 2, 4, 8, 19, 10]
1 [15, 16, 17]
2 [18, 3]
输出数据帧的行的顺序或列表中的值都很重要.
What I tried:个
我找到了这个answer,它显示了如何判断列表中是否至少有一项包含在另一个列表中,例如
>>not set([1, 2, 4, 8]).isdisjoint([2, 19])
True
返回True,因为2包含在两个列表中.
我还发现了这个有用的answer,它显示了如何将数据帧的每一行相互比较.答案使用lambda将定制函数应用于数据帧的每一行.
df.apply(lambda row: func(row['col1']), axis=1)
然而,我不确定如何将这两件事放在一起,如何创建func
方法.此外,我甚至不知道这种方法是否可行,因为生成的行数可能会少于原始数据帧的行数.
谢谢!