Из документов :
Обратите внимание, что эта процедура не фильтрует фрейм данных по его содержимому.Фильтр применяется к меткам индекса.
Из вашего вопроса очень похоже, что вы пытаетесь фильтровать на основе содержимого вашего фрейма данных.Таким образом, вы можете использовать обычную индексацию:
filtered_a_df = original_df[original_df['col-a'].str.contains('T2')]
filtered_b_df = original_df[original_df['col-b'].between('07:00:00','09:00:00')]
>>> filtered_a_df
col-a col-b
1 xyz.T2.456 09:17:00
2 xyz.T2.456 12:57:00
>>> filtered_b_df
col-a col-b
0 abcd.T1.123 07:57:00
Для дальнейшего объяснения filter
ваши условия могут работать, если вы пытаетесь фильтровать по индексу.Например, если у вас есть df2
в качестве исходного кадра данных, но с col-a
в качестве индекса, вы можете использовать фильтр:
df2 = original_df.set_index('col-a')
>>> df2
col-b
col-a
abcd.T1.123 07:57:00
xyz.T2.456 09:17:00
xyz.T2.456 12:57:00
# In this case you can use either regex or like arguments
>>> df2.filter(regex='T2',axis=0)
col-b
col-a
xyz.T2.456 09:17:00
xyz.T2.456 12:57:00
Или вы можете фильтровать столбцы.Возвращаясь к исходному df, вы можете, например, фильтровать столбцы с -b
в имени:
>>> original_df.filter(like='-b',axis=1)
col-b
0 07:57:00
1 09:17:00
2 12:57:00