【发布时间】:2021-02-21 13:35:36
【问题描述】:
我有一个数据框df,其中的列包含集合。这是一个示例:
df=pd.DataFrame([[{1,2,3,'a'},{5,'b','d',1,4}],
[{'z',9,'a','b',3},{'a',3,'z','b','d',9,4}]],columns=['set1','set2'])
我想检查列“set1”在哪里是列“set2”的子集,并返回 True 或 False。上面的结果应该是:
df
Out[69]:
set1 set2 issubset
0 {a, 1, 2, 3} {1, 4, 5, d, b} False
1 {a, 3, 9, b, z} {a, 3, 4, d, 9, b, z} True
我尝试了各种 lambda 组合,但无法让它发挥作用。例如:
df['issubset']=df.apply(lambda x:x.set1.issubset(x.set2))
结果是AttributeError: 'Series' object has no attribute 'set1'
可能有很多方法可以在这里给猫剥皮。速度很重要,因为每个真实集合都有 10,000 个值,而 df 是数千行。谢谢
【问题讨论】:
-
对于您的代码,您需要使用
apply指定轴,即df.apply(lambda x : x['set1'].issubset(x['set2']),axis=1)
标签: python pandas dataframe set subset