假设我有一个包含a、B、c、d列的 Dataframe df,我想从a、b、d列中减去这些列的平均值,我该如何实现呢?我试过df[['a','b','d']] = df[['a','b','d']] - df[['a','b','d']].mean(),但是我得到了SettingWithCopyWarning。我如何在没有警告的情况下达到同样的效果?
df[['a','b','d']] = df[['a','b','d']] - df[['a','b','d']].mean()
2guxujil1#
df'a','b','d '是原始 Dataframe 的类似视图...尝试在视图中设置值可能每次都有效,也可能每次都无效分头做
df['a']=df['a'].mean() df['b']=df['b'].mean() df['d']=df['d'].mean()
它对性能没有太大影响
a7qyws3x2#
你确定你得到了那个语句/行的警告吗?无论如何,在一个 Pandorable 的方式,并减少可见噪音,我会做:
cols = ["a", "b", "d"] df[cols] = df[cols].sub(df[cols].mean())
2w2cym1i3#
当您尝试直接修改 Dataframe 的切片时,例如df'a','b','d ',如果您不小心,可能会导致意外行为。因此,出现此警告是为了谨慎地警告您,执行此复制过程会更改原始 Dataframe 。要隐藏此警告,您可以用途:
mean = df[['a','b','d']].mean() df[['a','b','d']] = df[['a','b','d']] - mean
或
df.loc[:, ['a','b','d']] = df[['a','b','d']] - df[['a','b','d']].mean()
3条答案
按热度按时间2guxujil1#
df'a','b','d '是原始 Dataframe 的类似视图...尝试在视图中设置值可能每次都有效,也可能每次都无效
分头做
它对性能没有太大影响
a7qyws3x2#
你确定你得到了那个语句/行的警告吗?
无论如何,在一个 Pandorable 的方式,并减少可见噪音,我会做:
2w2cym1i3#
当您尝试直接修改 Dataframe 的切片时,例如df'a','b','d ',如果您不小心,可能会导致意外行为。因此,出现此警告是为了谨慎地警告您,执行此复制过程会更改原始 Dataframe 。要隐藏此警告,您可以用途:
或