如何用Pandas仅为y==1的行的x列添加正态分布噪声?
仅对Pandas中y=1的行的x列添加噪声的解决方案
直接用布尔索引结合loc就能实现你的需求,步骤如下:
- 导入依赖库
import pandas as pd import numpy as np
- 构造示例数据(替换成你的实际数据集即可)
data = {'x': [30, 1, 0, 300], 'y': [0, 1, 1, 0]} df = pd.DataFrame(data)
- 生成对应数量的噪声并添加到目标行
# 生成与y=1的行数量匹配的正态分布噪声(均值50,标准差10) noise = np.random.normal(50, 10, df[df['y'] == 1].shape[0]) # 仅对y=1的行的x列叠加噪声 df.loc[df['y'] == 1, 'x'] += noise
执行后,x列中y=1的行会被加上随机噪声,且自动转为浮点类型,其他行保持原值不变。示例输出如下:
x y 0 30.000000 0 1 51.234567 1 2 49.876543 1 3 300.000000 0
注:每次运行生成的噪声值都是随机的,所以实际结果中的浮点数值会有所不同。
内容的提问来源于stack exchange,提问作者Yiffany
相关产品推荐
相关产品推荐

