#python #pandas
#python #pandas
Вопрос:
У меня есть фрейм данных Pandas, в котором я хотел бы обновить столбец. В настоящее время формат похож на много-много строк. Если значение равно D, я хотел бы случайным образом выбрать из списка, чтобы заменить это значение. Например:
Values
A
B
C
D
my_list = ["E", "F", "G"]
df['Values'] = pd.np.where(df['Values'].str.contains("D"), random.choice(my_list), df['Values'])
Когда я делаю это, он захватывает только одно значение, скажем, «F», и заменяет все «D». Я хотел бы перейти по строкам, чтобы распределять случайным образом. Так, например, если я заменяю 100 D, я мог бы получить, 40 «E», 25 F и 35 G. Есть мысли о том, как я могу это настроить?
Спасибо!
Ответ №1:
Вы можете назначить
m = df['Values'].str.contains("D")
df.loc[m,'Values']=np.random.choice(my_list,m.sum())
df
Out[27]:
Values
0 A
1 B
2 F
3 E