Вы можете проверить все поля, чтобы найти, что любое из них содержит указанную вами строку, используя функцию any()
и применить ее ко всем строкам кадра данных с помощью функции pandas apply()
:
import pandas as pd
import json
data_json = [
{
'field_1': 'As of December 31, 2018',
'field_2': '1',
'field_3': '2'
},
{
'field_1': '3',
'field_2': '4',
'field_3': '5'
},
{
'field_1': '6',
'field_2': 'As of December 31, 2018',
'field_3': '7'
},
{
'field_1': '8',
'field_2': '9',
'field_3': '10'
},
{
'field_1': '11',
'field_2': '12',
'field_3': 'As of December 31, 2018'
}]
data = pd.read_json(json.dumps(data_json))
print(data)
Вывод:
field_1 field_2 field_3
0 As of December 31, 2018 1 2
1 3 4 5
2 6 As of December 31, 2018 7
3 8 9 10
4 11 12 As of December 31, 2018
После этого, используя apply()
+ any()
:
data_filtered = data[~data.apply(lambda x: any([True for elem in x if elem == 'As of December 31, 2018']), axis=1)]
print(data_filtered)
Вывод:
field_1 field_2 field_3
1 3 4 5
3 8 9 10
ОБНОВЛЕНИЕ:
Если вы хотите удалить строки, основанные на нескольких значениях, вы можете изменить свой код следующим образом:
data_filtered = data[~data.apply(lambda x: any([True for elem in x if elem in ['As of December 31, 2018', 'As of March 31, 2018']]), axis=1)]