Изменение значения в фрейме данных на основе двух условий

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Если выполнено условие в столбце 1 И если выполнено условие в столбце 2, то измените значение в столбце 1. Эта логика, похоже, работает и возвращает True или False для каждой строки в df

 data.id.isin([10,20,30,40]) amp; (data.source.isnull()
  

Что я хотел бы сделать сейчас, так это изменить значение data.id до 50

Я не получаю ошибку с этой логикой, но значение не меняется

 data.loc[(data.id.isin([10,20,30,40])) amp; (data.source.isnull()), 'id'] = 50
  

Комментарии:

1. можете ли вы воспроизвести это в примере df?

Ответ №1:

Когда я использовал ваш код в этом приведенном примере, значение, похоже, изменилось правильно

 import pandas as pd
import numpy as np

# Create example dataframe
data = pd.DataFrame(np.arange(0,100,10), columns=['id'])
data.loc[3, 'source'] = 'foo'

# Change value
data.loc[(data.id.isin([10,20,30,40])) amp; (data.source.isnull()), 'id'] = 50
  

После этого столбец id имеет значения [ 0, 50, 50, 30, 50, 50, 60, 70, 80, 90]

Комментарии:

1. Я не уверен, что произошло. Я работал в Jupyter Notebook. Я закрылся и попробовал снова, и это работает. Спасибо за помощь!