您可以加入行的相關列的字符串,然後搜索AAA,BBB
模式。
def func(x):
return any(x1 == 'AAA' and x2 == 'BBB' for x1, x2 in
zip(x.slice_shift(1), x.slice_shift(-1)))
print(df[df.apply(func, axis=1)])
對於這個數據幀:
In [152]: df.filter(regex='COL_').apply(lambda x: 'AAA,BBB' in ','.join(x), axis=1)
Out[152]:
0 True
1 False
2 False
3 True
dtype: bool
如果數值,例如用map
In [166]: df.apply(lambda x: 'AAA,BBB' in ','.join(map(str, x)), axis=1)
Out[166]:
0 True
1 False
2 False
3 True
dtype: bool
In [175]: df[df.apply(lambda x: 'AAA,BBB' in ','.join(map(str, x)), axis=1)]
Out[175]:
ID COL_1 COL_2 COL_3 COL_4
0 1 AAA BBB CCC DDD
3 4 CCC AAA BBB DD
謝謝。你能解釋一下如何獲取行,而不是「真」或「假」嗎? – Dinosaurius
另外,我得到一個錯誤'TypeError:('sequence item 0:expected string,numpy.int64 found',u'occurred at inde' – Dinosaurius
您確定,您正在處理相同的樣本數據嗎?所有'COL_'列預計會是字符串 – Zero