#python #pandas #dataframe #loops
Вопрос:
Я пытаюсь присвоить значение одному столбцу на основе значений двух других столбцов, содержащих строковые значения. Я попробовал следующее, которое не генерирует никаких выходных данных и просто оставляет столбцы для заполнения пустыми. У кого-нибудь есть лучшее решение?
for i in Table.index:
if pd.notnull(Table['Column1'][i]) and pd.notnull(Table['Column2'][i]):
Table.loc[Table['Column3'][i]] = Table['Column2'][i]
Ответ №1:
Используйте Series.notna
с amp;
для побитовых AND
и заданных значений в DataFrame.loc
:
m = Table['Column1'].notna() amp; Table['Column2'].notna()
Table.loc[m, 'Column3'] = Table.loc[m, 'Column2']
Ответ №2:
вы можете попробовать использовать логическую маскировку и метод доступа loc:
mask=Table['Column1'].notna() amp; Table['Column2'].notna()
Table.loc[mask,'Column3']=Table.loc[mask,'Column2']
Комментарии:
1. Спасибо, однако это вызывает ошибку (ошибка ключа: ‘Column1’). Когда я печатаю этот столбец как отдельную команду, он не вызывает никаких ошибок.. Будет ли по-прежнему необходимо интегрировать его в цикл for с индексом i?
2. @progammerattempt хорошо, сэр, этот ответ соответствует предоставленному вами коду(bcz, вы использовали «Столбец 1» в своем коде)….пожалуйста, проверьте, присутствует ли «Столбец 1» в выводе
Table.columns
3. Да, это явно присутствует, так что не уверен, что вызывает это в данный момент..
4. @programmerattempt сэр, пожалуйста, проверьте еще раз, так как
' '
по обе стороны от него могут быть пробелы5. ..это не так, так как столбец может быть напечатан и отображается в команде столбцы..мммм