概率变异数据框
Posted
技术标签:
【中文标题】概率变异数据框【英文标题】:Probabilistically mutate dataframe 【发布时间】:2021-10-19 08:33:10 【问题描述】:给定
pd.DataFrame('feature': [0.5,0.1,0.3,0.2,0.6,0.4,0.3], 'label': [0,1,2,2,1,2,0])
我想应用以下规则:对于所有 feature
大于 0.2 的行,它们的标签有 60% 的机会更改为 2。否则它将保持不变。
我的解决方案是:
df.loc[df.feature > 0.2, 'label'] = [
np.random.choice(x, p=(0.6,0.4)) for x in zip(np.full(len(df.feature > 0.2), fill_value=2), df.loc[df.feature > 0.2, 'label'])]
有没有更简单的矢量化方法来做到这一点?
【问题讨论】:
【参考方案1】:想法是按百分比设置掩码,如this 解决方案,并仅设置更大的选定值,如0.2
:
N = 2
m = df.feature > 0.2
mask = np.random.choice([True, False], m.sum(), p=[0.6, 0.4])
df.loc[m, 'label'] = np.where(mask, N, df.loc[m, 'label'])
【讨论】:
以上是关于概率变异数据框的主要内容,如果未能解决你的问题,请参考以下文章