#python #pandas #dataframe
Вопрос:
df.loc[(df['Original Price'] != '0') amp; (df['Old Original Price'] != '0'), 'Price Difference'].index = df['Original Price'] - df['Old Original Price']
В настоящее время я пытаюсь сравнить два столбца фрейма данных, и если их значение не равно 0, они создадут новый столбец и произведут вычитание между двумя значениями
хотя я, кажется, продолжаю получать ошибку, упомянутую ниже:
TypeError: '(Series([], dtype: bool), 'Price Difference')' is an invalid key
Комментарии:
1. Похоже, ты пропал
loc
без вести . Вы не можете выбрать как индекс, так и столбцы безloc
илиiloc
-gt;df.loc[(df['Original Price'] != '0') amp; (df['Old Original Price'] != '0'), 'Price Difference'] = df['Original Price'] - df['Old Original Price']
2. Да, я пробовал это, но дело в том, что для этого им нужен ключ, и я намерен собрать всех, кто находится в столбце «первоначальная цена» и «старая первоначальная цена», то есть != 0. Следовательно, я не могу указать конкретную строку
3. Как насчет фрагмента кода в моем комментарии, который работает не так, как ожидалось?
Ответ №1:
Вы можете попробовать:
df.loc[((df['Original Price'] != '0') amp; (df['Old Original Price'] != '0')),'Price_Difference'] = df['Original Price'] - df['Old Original Price']
Ответ №2:
Мне нужно увидеть пример того, как выглядят ваши данные и каковы типы данных ваших столбцов, но, основываясь на том, что вы упомянули, вот что я предлагаю:
df['Price Difference']= df['Original Price'] df.loc[((~df['Original Price'].isin(['0'])) amp; (~df['Old Original Price'].isin(['0']))), 'Price Difference']= df['Original Price'] - df['Old Original Price']
Ответ №3:
Попробуй это
df[Price Difference] =df.apply(function,axis=1)
И напишите логику в методе
function(row): { if (row['Original Price'] != '0') amp; (row['Old Original Price'] != '0'): return row['Original Price'] - row['Old Original Price'] }
Комментарии:
1. Это не то, как функции определяются в python. DataFrame.apply также не будет обрабатывать невозврат, так как параметр с расширением вам нужно будет обрабатывать все случаи, если применять итеративно.
2. Пожалуйста, поделитесь образцом ваших данных.