修改熊猫数据框的函数

时间:2021-03-22 13:58:50

标签: python-3.x pandas

我有一个值的数据框,我想添加一些噪音。为此,我做了这个功能:

def noise(df, noise):
    return np.random.normal(0, df.std() * noise, df.size)

并调用它:

noise(test_df, 0.15)

但是它给了我一个形状不匹配错误:

ValueError: shape mismatch: objects cannot be broadcast to a single shape

一个数据框示例:

test_df = pd.DataFrame([[1,2],[3,4]], columns=list('AB'), dtype=float) 

我确实需要我的函数将数据帧和噪声作为参数。 我做错了什么?

谢谢

1 个答案:

答案 0 :(得分:1)

df.std() 返回一个系列,每列一个条目。您需要使用 size=df.shape 以便可以将该系列广播到形状,而不是 df.size

尝试:

def noise(df, noise, seed=None):
    if seed is not None: np.random.seed(seed)
    return np.random.normal(0, df.std() * noise,size=df.shape)

noise(test_df, 0.15, seed=43)

输出:

array([[ 0.05460277, -0.19271801],
       [-0.08029263, -0.11347273]])