Я хотел бы перезаписать число строк во фрейме данных, если определенный столбец пуст, и перезаписать только эти строки.мои попытки ниже перезаписывают все записи, кажется, не только те, которые возвращены при поиске
Таблица 1
>>> route_data
circuit_id circuit_provider circuit_type down errors route site site_id mask next_hop
0 None BOB MPLS False None 10.10.94.0 HORSE 7 255.255.255.0 172.10.1.25
1 None BOB MPLS False None 10.10.82.0 LONDON 8 255.255.255.0 172.10.1.25
2 None BILL MPLS False None 10.10.25.0 BACON 128 255.255.255.0 172.1.1.21
3 None BILL MPLS False None 10.11.0.0 MANC 1 255.255.0.0 NaN
4 None BOB MPLS False None 10.10.66.0 YORK 9 255.255.255.0 172.10.1.25
5 None BOB MPLS False None 10.10.87.0 LIVER 10 255.255.255.0 172.10.1.25
6 None BOB MPLS False None 10.10.120.0 EGGS 11 255.255.255.0 172.10.1.25
Таблица 2
>>> device_route_data
circuit_id circuit_provider circuit_type down errors route site site_id mask next_hop
0 None BOB MPLS False None 10.10.94.0 HORSE 7 255.255.255.0 172.17.5.1
1 None BOB MPLS False None 10.10.82.0 LONDON 8 255.255.255.0 172.17.5.1
2 None BILL MPLS False None 10.10.25.0 BACON 128 255.255.255.0 172.16.30.10
3 None BILL MPLS False None 10.11.0.0 MANC 1 255.255.0.0 172.16.30.10
4 None BOB MPLS False None 10.10.66.0 YORK 9 255.255.255.0 172.17.5.1
5 None BOB MPLS False None 10.10.87.0 LIVER 10 255.255.255.0 172.17.5.1
6 None BOB MPLS False None 10.10.120.0 EGGS 11 255.255.255.0 172.17.5.1
получить все записи Nan иoverwrite
route_data.loc[route_data.next_hop.str.match('nan'), route_data.columns] = device_route_data[device_route_data.columns]
просто возвращает данные таблицы 2 полностью
circuit_id circuit_provider circuit_type down errors route site site_id mask next_hop
0 None BOB MPLS False None 10.10.94.0 HORSE 7 255.255.255.0 172.17.5.1
1 None BOB MPLS False None 10.10.82.0 LONDON 8 255.255.255.0 172.17.5.1
2 None BILL MPLS False None 10.10.25.0 BACON 128 255.255.255.0 172.16.30.10
3 None BILL MPLS False None 10.11.0.0 MANC 1 255.255.0.0 172.16.30.10
4 None BOB MPLS False None 10.10.66.0 YORK 9 255.255.255.0 172.17.5.1
5 None BOB MPLS False None 10.10.87.0 LIVER 10 255.255.255.0 172.17.5.1
6 None BOB MPLS False None 10.10.120.0 EGGS 11 255.255.255.0 172.17.5.1
, используя
route_data.loc[route_data.next_hop.str.match('nan'), route_data.columns]
Успешно получает записи Nan
circuit_id circuit_provider circuit_type down errors route site site_id mask next_hop
3 None BILL MPLS False None 10.11.0.0 MANC 1 255.255.0.0 NaN
это единственная запись, которую я хочу перезаписать, хотя, я хочу, чтобы все остальные остались такими, как есть, кто-нибудь знает, что мне не хватает?
Спасибо
РЕДАКТИРОВАТЬ:
Я пытаюсь сделать то же самое для circuit_type, но получаю пустые результаты.проверка .isnull () также работает на None Types?
sample:
circuit_id circuit_provider circuit_type down errors route site site_id mask next_hop
0 None BOB MPLS False None 10.10.94.0 HORSE 7 255.255.255.0 172.17.5.1
1 None BOB MPLS False None 10.10.82.0 LONDON 8 255.255.255.0 172.17.5.1
2 None BILL MPLS False None 10.10.25.0 BACON 128 255.255.255.0 172.16.30.10
3 None BILL MPLS False None 10.11.0.0 MANC 1 255.255.0.0 172.16.30.10
4 None BOB MPLS False None 10.10.66.0 YORK 9 255.255.255.0 172.17.5.1
5 None None None False None 10.10.87.0 LIVER 10 255.255.255.0 172.17.5.1
6 None BOB MPLS False None 10.10.120.0 EGGS 11 255.255.255.0 172.17.5.1
output
>>> route_data.loc[route_data.circuit_type.isnull(), :]
Empty DataFrame
Columns: [circuit_id, circuit_provider, circuit_type, down, errors, route, site, site_id, mask, next_hop]
Index: []
>>>
EDIT 2: дальнейшее тестирование, это работает для поискастроки
route_data.loc[route_data.circuit_type.str.contains("None"), :]
, однако, когда я пытаюсь протестировать и перезаписать только строки с типом схемы на ноль, как указано ниже, он просто перезаписывает все строки, поэтому вместо исходной таблицы с измененными None строкамиЯ просто получаю новую таблицу без исходных данных
f = route_data.loc[route_data.circuit_type.str.contains("None"), :] = device_route_data