#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. Не стесняйтесь отменять изменения, если не в порядке.