熊猫根据开始和结束日期重新采样

时间:2021-04-21 19:11:29

标签: python-3.x pandas dataframe python-datetime

我有电动汽车充电的年度数据,其中包含充电持续时间的总能量“能量(千瓦时)”。我还有“Y/m/d H:M:S”格式的开始充电时间和结束充电时间。我正在尝试根据总能量以及开始和结束时间创建一个平均能量使用列。

我想我需要 pandas resample 函数,因为我之前用它来创建定时平均值,但不确定如何创建两次之间的定时平均值。

1 个答案:

答案 0 :(得分:0)

我认为您不需要熊猫重新采样功能。您可以使用 Pandas 的一些更基本的日期时间功能来代替。

首先,这里有一些玩具数据:

import numpy as np
import pandas as pd
np.random.seed(42)

start = pd.date_range("2021-04-21", periods=5, freq="H")
end = start + pd.to_timedelta(np.random.rand(len(start)), unit='h')
energy_total = 100 * np.random.rand(len(start))

df = pd.DataFrame({'start': start, 'end': end, 'energy_total': energy_total})

现在我们可以将充电持续时间计算为 Timedelta 并使用 dt.total_seconds() 将其转换为一个简单的数字。我们应该将其除以 3600 以获得以小时为单位的时间,因为总能量以千瓦时为单位。然后我们可以通过将总能量除以这个时间来计算平均能量流(以千瓦为单位):

charge_timedelta = df.end - df.start 
charge_hours = charge_timedelta.dt.total_seconds() / 3600

df['energy_flow'] = df.energy_total / charge_hours 
df.round(2)
    start                end                  energy_total  energy_flow
0   2021-04-21 00:00:00  2021-04-21 00:22:28  15.60          41.65
1   2021-04-21 01:00:00  2021-04-21 01:57:02   5.81           6.11
2   2021-04-21 02:00:00  2021-04-21 02:43:55  86.62         118.33
3   2021-04-21 03:00:00  2021-04-21 03:35:55  60.11         100.41
4   2021-04-21 04:00:00  2021-04-21 04:09:21  70.81         453.84