我有一个熊猫数据框,我想更新一列。目前,格式与许多行相似。如果值等于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。关于如何进行调整的任何想法?
谢谢!
答案 0 :(得分:0)
您可以分配
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