Замена соответствующих значений столбцов в фрейме данных Python Pandas

#python #pandas #dataframe

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

Вопрос:

У меня есть фрейм данных, скажем :

   Name  Visits
0 Z      0
1 A      0
2 B      1
3 C      1
4 D      0
5 E      0
  

Теперь я составил список с теми именами, чьи посещения равны 0, поэтому в нем есть Z, A, D и E. Теперь я случайным образом выбираю 2 имени из этих 4. Затем я хочу увеличить количество посещений этих 2 человек на 1. Как мне ссылаться только на эти 2 имени, получать доступ к их соответствующим посещениям и изменять их? [В python Pandas]
Спасибо!

Ответ №1:

Вот возможное решение:

 df.visit[df.visit == 0]  = 1
  

Ответ №2:

Если у вас уже есть список тех, кто посетил 0 раз, вы можете использовать pd.Series.isin для создания логической маски для логической индексации, а затем увеличить соответствующие значения на 1

 vals = ['Z', 'A', 'D', 'E']
m = df['Name'].isin(vals)
df.loc[m, 'Visits'] =1
# This only increases Z, A, D, E visits by 1
  

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

1. это сработало для меня, большое спасибо! Я просто заменил vals случайным списком, содержащим 2 имени, и это сработало как шарм, большое спасибо!!

2. Рад помочь. Взгляните на ответ БЕНА намного лучше, чем на мой TBH 😉

3. есть ли способ, которым я могу связаться с вами @Ch3esteR lol, пожалуйста, не говорите «нет»?

4. @YamiKanashi Да, конечно, через чат StackOverflow.

Ответ №3:

Попробуйте random.choice из числа, затем присвоите значение с помощью index

 df.loc[np.random.choice(df.index[df.Visits==0],2),'Visits']  = 1
df
Out[95]: 
  Name  Visits
0    Z       1
1    A       0
2    B       1
3    C       1
4    D       0
5    E       0
  

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

1. Отредактированный ответ, поскольку OP хотел увеличить на 1. Не стесняйтесь отменять изменения, если не в порядке.