gpt4 book ai didi

python - 用 Pandas 划分垃圾箱

转载 作者:太空宇宙 更新时间:2023-11-03 11:38:08 25 4
gpt4 key购买 nike

我在 pandas 中有一个数据框,如下所示。 Index 是日期时间对象,按天排序,分为 5 分钟的 bin。我有一个名为“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 获得了 pandas 中的另一个数据框

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 循环的情况下,将 col1 除以 col2 来划分每个 5 分钟的 bin。为了更好地解释,在所有的日子里,对于每个 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

最佳答案

如果需要按次数划分:

df['new'] = df['col1'].div(df.groupby(df.index.time)['col1'].transform('mean'))
print (df)
col1 new
DateTime
2008-04-28 09:40:00 300.0 0.75
2008-04-28 09:45:00 -800.0 -inf
2008-04-28 09:50:00 0.0 0.00
2008-04-28 09:55:00 -100.0 1.00
2008-04-28 10:00:00 0.0 NaN
2008-04-29 09:40:00 500.0 1.25
2008-04-29 09:45:00 800.0 inf
2008-04-29 09:50:00 100.0 2.00
2008-04-29 09:55:00 -100.0 1.00
2008-04-29 10:00:00 0.0 NaN

或者如果需要按天数划分:

df['new'] = df['col1'].div(df.groupby(df.index.date)['col1'].transform('mean'))
print (df)
col1 new
DateTime
2008-04-28 09:40:00 300.0 -2.500000
2008-04-28 09:45:00 -800.0 6.666667
2008-04-28 09:50:00 0.0 -0.000000
2008-04-28 09:55:00 -100.0 0.833333
2008-04-28 10:00:00 0.0 -0.000000
2008-04-29 09:40:00 500.0 1.923077
2008-04-29 09:45:00 800.0 3.076923
2008-04-29 09:50:00 100.0 0.384615
2008-04-29 09:55:00 -100.0 -0.384615
2008-04-29 10:00:00 0.0 0.000000

关于python - 用 Pandas 划分垃圾箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55239779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com