2017-03-03 127 views
2

我在python中用熊猫数据框制作了一个代码,它将每小时数据的上午12点到下午3点的值平均一个月,然后从每列中减去该月平均值。该代码从csv文件读取数据。数据从熊猫的列中减去平均值DataFrame

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() 

此代码给我从12-3am平均为每月1列-5。现在我如何从1-5列中的每个值中减去这些平均值?

+0

'''df.ix [:, 1:5] = df.ix [:, 1:5] - your_res.values'''应该做的。 – TrigonaMinima

+0

我的数据被保存为变量df。当我尝试设置类似(df - df.ix [:,1:5])时,我得到一堆NaN值。 – acb

回答

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 
+0

我认为这可行。如何将这些值附加到csv文件中以替换其他值? – acb

+0

一旦你的熊猫数据框看起来如何你想要它,你可以做df.to_csv(文件名)只知道这将覆盖旧的csv,如果你使用相同的文件名 – Kewl

+0

唯一的问题是,当我把它保存到一个csv它删除了我没有做减法的列。我怎样才能将这些列保留在数据中,同时还要减去其他列? – acb