У меня есть CSV-файл, который я конвертирую в панду в Python 3.7
.Затем я хочу проверить, имеют ли определенные ячейки значение NaN
(т.е. в моем случае они пустые), и только в этом случае я хочу заменить содержимое ячейки другим значением.
Я выбираю ячейку со значениями внутри других ячеек в других столбцах (столбцы family_name
и first_name
) в той же строке.Вот MWE
:
import csv
import pandas as pd
import numpy as np
df = pd.DataFrame({"family_name":["smith", "duboule", "dupont"], "first_name":["john","jean-paul", "luc"], "weight":[70, 85, pd.np.nan]})
value_to_replace = 90
if df["weight"][(df["family_name"] == "dupont") & (df["first_name"] == "luc")] == pd.np.nan:
df["weight"][(df["family_name"] == "dupont") & (df["first_name"] == "luc")] = value_to_replace
Я получаю следующую ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mymac/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py", line 1576, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Я также попытался добавить .bool() == True
в следующей форме, но я получил ту же ошибкусообщение:
if pd.isna(df["weight"][(df["family_name"] == family_name) & (df["first_name"] == first_name)]).bool() == True:
df["weight"][(df["family_name"] == "dupont") & (df["first_name"] == "luc")] = value_to_replace