从pandas DataFrame中的列中减去平均值

时间:2017-03-03 14:51:05

标签: python python-3.x pandas dataframe

我在python中创建一个带有pandas数据帧的代码,该数据帧将每小时数据的值从上午12点到凌晨3点平均一个月,然后从每列中减去每月平均值。代码从csv文件中读取数据。

数据样本

DateTime         C1      C2      C3      C4      C5      V
11/1/2014 0:00  1.12    0.96    1.11    0.95    0.93    4.06
11/1/2014 1:00  1.12    0.96    1.11    0.95    0.93    4.06
11/1/2014 2:00  1.12    0.95    1.11    0.95    0.93    4.06
11/1/2014 3:00  1.12    0.95    1.11    0.95    0.93    4.06
11/1/2014 4:00  1.12    0.95    1.11    0.95    0.93    4.06
11/1/2014 5:00  1.12    0.95    1.11    0.95    0.93    4.06
11/1/2014 6:00  1.12    0.95    1.11    0.96    0.93    5.24
11/1/2014 7:00  1.14    0.96    1.12    0.98    0.95    498.64
11/1/2014 8:00  1.22    1.04    1.20    1.05    1.02    623.51
11/1/2014 9:00  1.46    1.28    1.43    1.27    1.25    641.80

所以我用来获得平均值的代码是

df.ix[:,1:5].between_time('0:00', '3:00').resample('1M').mean()

这段代码给出了第1-5列当月12-3点的平均值。现在,我如何从第1-5列中的每个值中减去这些平均值?

1 个答案:

答案 0 :(得分:2)

这是你正在寻找的吗?

month_av = df.ix[:,1:5].between_time('0:00', '3:00').resample('1M').mean()
df.ix[:, 1:5] = df.ix[:, 1:5] - month_av.values