这个问题与my previous question有关。鉴于以下数据框:如何从数据框中提取特定序列?
df =
ID TYPE VD_0 VD_1 VD_2 VD_3 VD_4 VD_5
1 ABC V1234 aaa bbb 456 123 564
2 DBC 456 A45 aaa V1234 bbb 564
3 ABD 456 V1234 bbb ccc 456 123
4 ABD ccc aaa 123 V1234 SSW 123
还有就是VD_0
目标值以下列表 - VD_5
:
myList = [V1234,456,A45]
我想只有在df
有2个或更多的“序贯” occurances那些行的myList
列VD_0
- VD_5
,的值,但允许它们之间有任何其他值(任何其他不属于myList
的值)。例如,这些允许值可能是aaa
,bbb
,ccc
等
结果应该是这样:
result =
ID TYPE Col_0 Col_1 Col_2
1 ABC V1234 456
2 DBC 456 A45 V1234
3 ABD 456 V1234 456
在result
我想在Col_
列显示从myList
只值,而忽略其余的价值。
下面的代码工作正常,但它允许在不出现任何myList
值之间的它并没有考虑到:
subset = df.filter(like='VD_')
df[subset.isin(myList).rolling(2, axis=1).sum().max(axis=1)>=2]
任何帮助将不胜感激。
是否有可能在最终结果(类似于我的示例)中仅显示来自'myList'的值。另外,请你解释为什么你使用'sum(axis = 1)> 1',但不是'sum(axis = 1)> = 2' – Dinosaurius
请检查我编辑过的naswer。 – jezrael
它看起来做我需要的,但在我的真实数据集中,我有超过100列'VD_'。最终结果是否可能不显示'aaa','ccc'和其他所有不在'myList'中的值? – Dinosaurius