我有一个数据框,其中一列是一个列表:
import pandas as pd
data = [{'colA': 'ID1', 'colB': ['A', 'B', 'C']},
{'colA': 'ID2', 'colB': ['A']},
{'colA': 'ID3', 'colB': ['B']},
{'colA': 'ID4', 'colB': ['A', 'B']},
{'colA': 'ID5', 'colB': ['C', 'D']}]
df = pd.DataFrame(data)
df
colA colB
0 ID1 [A, B, C]
1 ID2 [A]
2 ID3 [B]
3 ID4 [A, B]
4 ID5 [C, D]
我想筛选行,以便只选择那些只包含另一个列表中的值的行。但是,不应选择包含其他列表中不存在的任何值的任何行。你知道吗
valid_list = ['A', 'B']
预期结果
colA colB
0 ID1 [A, B, C] #not selected because it contains C
1 ID2 [A] #Valid
2 ID3 [B] #Valid
3 ID4 [A, B] #Valid
4 ID5 [C, D] #Not valid - Either values not present in valid list
最终数据帧:
colA colB
0 ID2 [A]
1 ID3 [B]
2 ID4 [A, B]
将
issubset
与set
一起使用:使用
np.isin
和all
您还可以应用函数来获取遮罩:
相关问题 更多 >
编程相关推荐