相关疑难解决方法(0)

如何检查列表中的所有元素是否在pandas列中

我有一个数据框和一个列表:

df = pd.DataFrame({'id':[1,2,3,4,5,6,7,8], 
    'char':[['a','b'],['a','b','c'],['a','c'],['b','c'],[],['c','a','d'],['c','d'],['a']]})

names = ['a','c']
Run Code Online (Sandbox Code Playgroud)

我想仅在列中同时存在a并且c都存在的情况下获取行char。(这里的顺序无关紧要)

预期产量:

       char  id                                                                                                                      
1  [a, b, c]   2                                                                                                                      
2     [a, c]   3                                                                                                                      
5  [c, a, d]   6   
Run Code Online (Sandbox Code Playgroud)

我的努力

true_indices = []
for idx, row in df.iterrows():
    if all(name in row['char'] for name in names):
        true_indices.append(idx)


ids = df[df.index.isin(true_indices)]
Run Code Online (Sandbox Code Playgroud)

这给了我正确的输出,但是对于大型数据集来说太慢了,因此我正在寻找更有效的解决方案。

python python-3.x pandas

7
推荐指数
2
解决办法
1159
查看次数

标签 统计

pandas ×1

python ×1

python-3.x ×1