将一列的中位数设置为零个熊猫

时间:2018-07-30 12:57:56

标签: python pandas dataframe statistics

我有一个包含两列的数据框,我想将每一列的中值设置为零。如何在不更改标准偏差的情况下做到这一点?或者更好的做法是这样做的正确方法?

假设我有

df = pd.DataFrame(np.random.randn(100, 2))
#first column
df0=df[0]
#set median to zero
test=abs(df0-df.median())

自从我再次寻找

test.median()

它打印出的值不是我零,而是上面的值。我的想法有误吗?

2 个答案:

答案 0 :(得分:1)

IIUC,你想要

test= df0 - df[0].median()

>>> test.median()
0.0

如果仅获取序列的绝对值,则将更改中间值,因为这当然取决于元素的顺序。

答案 1 :(得分:0)

这里主要需要做两件事:

  1. 遍历列
  2. 对于每一列,您要计算其中位数,并从与该列相关的所有值中减去它。

不要使用绝对值,因为它会破坏您想要的median = 0

import pandas as pd

df = pd.DataFrame(np.random.randn(100, 2))
for col in df.columns:
    df[col] = df[col] - np.median(df[col])

测试:

for col in df.columns:
    print(np.median(df[col]))

0.0
0.0