用大熊猫划分垃圾箱

我在熊猫中有一个如下所示的数据框。索引是日期时间对象,按天排序,分为 5 分钟区间。我有一个名为“col1”的列。所以如果我这样做


df['col1']

我得到:


DateTime

2008-04-28 09:40:00     300.0

2008-04-28 09:45:00    -800.0

2008-04-28 09:50:00       0.0

2008-04-28 09:55:00    -100.0

2008-04-28 10:00:00       0.0    

2008-04-29 09:40:00     500.0

2008-04-29 09:45:00     800.0

2008-04-29 09:50:00     100.0

2008-04-29 09:55:00    -100.0

2008-04-29 10:00:00       0.0

我在原始数据帧中使用 groupby 获得了另一个数据帧


df2 = df([df.index.time])[['col2']].mean()    

输出:


           col2

09:40:00   4603.585657

09:45:00   5547.011952

09:50:00   8532.007952

09:55:00   6175.298805

10:00:00   4236.055777

我想要做的是在不使用 for 循环的情况下,为 5 分钟的 bin 中的每一个将 col1 除以 col2。为了更好地解释,在所有的日子里,每个 bin 将 col1 除以 col2。例如,将 col1 中的所有 9:40:00 值除以 col2 中的 9:40:00 值。


我不知道如何在没有 for 循环的情况下开始执行此操作,但我的印象是它应该可以用 Pandas 执行。


预期的输出是:


DateTime

2008-04-28 09:40:00     300.0/4603.585657

2008-04-28 09:45:00    -800.0/5547.011952

2008-04-28 09:50:00       0.0/8532.007952

2008-04-28 09:55:00    -100.0/6175.298805

2008-04-28 10:00:00       0.0/4236.055777  

2008-04-29 09:40:00     500.0/4603.585657

2008-04-29 09:45:00     800.0/5547.011952

2008-04-29 09:50:00     100.0/8532.007952

2008-04-29 09:55:00    -100.0/6175.298805

2008-04-29 10:00:00       0.0/4236.055777


哆啦的时光机
浏览 180回答 1
1回答

缥缈止盈

如果需要分次:df['new'] = df['col1'].div(df.groupby(df.index.time)['col1'].transform('mean'))print (df)                      col1   newDateTime                        2008-04-28 09:40:00  300.0  0.752008-04-28 09:45:00 -800.0  -inf2008-04-28 09:50:00    0.0  0.002008-04-28 09:55:00 -100.0  1.002008-04-28 10:00:00    0.0   NaN2008-04-29 09:40:00  500.0  1.252008-04-29 09:45:00  800.0   inf2008-04-29 09:50:00  100.0  2.002008-04-29 09:55:00 -100.0  1.002008-04-29 10:00:00    0.0   NaN或者如果需要按天划分:df['new'] = df['col1'].div(df.groupby(df.index.date)['col1'].transform('mean'))print (df)                      col1       newDateTime                            2008-04-28 09:40:00  300.0 -2.5000002008-04-28 09:45:00 -800.0  6.6666672008-04-28 09:50:00    0.0 -0.0000002008-04-28 09:55:00 -100.0  0.8333332008-04-28 10:00:00    0.0 -0.0000002008-04-29 09:40:00  500.0  1.9230772008-04-29 09:45:00  800.0  3.0769232008-04-29 09:50:00  100.0  0.3846152008-04-29 09:55:00 -100.0 -0.3846152008-04-29 10:00:00    0.0  0.000000
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python