Вменение значений из списка во фрейм данных Pandas

#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