我有一个熊猫数据框:
id attr
1 val1
2 val1||val2
3 val1||val3
4 val3
和清单 special_val = ['val1', 'val2', 'val4']
我想过滤第一个数据框以保留其所有attr
值都在列表中的行。所以我需要结果是这样的:
id attr
1 val1 #val1 is in special_val
2 val1||val2 #both val1 and val2 are in special_val
我正在考虑使用pandas.DataFrame.isin
,pandas.Series.isin
但我无法提出正确的语法。你能帮忙吗?
您可以结合使用str.split
,isin()
以及groupby()
:
s = df['attr'].str.split('\|+', expand=True).stack().isin(special_val).groupby(level=0).all()
df[s]
输出:
id attr
0 1 val1
1 2 val1||val2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句