Как сослаться на пустую клетку в преобразовании панд - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь написать код, который создаст новый документ Excel с новым столбцом, который имеет разные значения в зависимости от существующих данных. В частности, если ячейка под "Servicer" пуста, я хотел бы новый столбец с именем "Требуется очистка?" сказать «Да» в этом ряду, а в противном случае сказать «Нет». Я ожидаю, что следующий код будет работать, но он возвращает «Нет» для каждой строки, даже если ячейка «Servicer» пуста. Я также пытался использовать значение Python None вместо '' с теми же результатами.

filepath = 'C:/Users/jackley/Desktop/'

filename = 'test.xlsx'

df = pd.read_excel(filepath+filename)

df["Needs Cleanup?"]=df["Servicer"].apply(lambda x: "Yes" if x == '' else "No")

df.to_excel(filepath+"test"+filename,index=False)

Я использовал эту структуру кода для создания условных значений для нового столбца без проблем, если мои операторы if / else ссылались на значения, которые действительно отображались в столбце «Servicer». Именно когда я пытаюсь создать условный оператор на основе того, пуста ли ячейка, у меня возникает эта проблема. Есть ли способ в рамках этой структуры кода возвращать различные значения в зависимости от того, пуста ли указанная ячейка?

Любая помощь будет очень признательна, заранее спасибо

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Я до сих пор не понимаю, почему предложенные ответы не работают, но я смог решить свою проблему, добавив следующий код:

df.fillna(" ",inplace=True)

и затем изменил мое условное утверждение на:

"Yes" if x == " " else "No"

(спасибо "Code Like a Girl" за ответ в старом сообщении в блоге!)

0 голосов
/ 28 июня 2018

Как насчет этого? Вам необходимо заменить '' на np.nan.

df["Needs Cleanup?"]=df["Servicer"].apply(lambda x: "Yes" if x == np.nan else "No")

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...