![](/img/trans.png)
[英]trying to add hours, minutes and seconds to the date time column of a dataframe python
[英]Add hours column to regular list of minutes, group by it, and average the data in Python
我一直在寻找类似的问题,但似乎没有一个解决以下挑战。 我有一个包含分钟列表和相应值的熊猫数据框,如下所示:
minute value
0 454
1 434
2 254
该列表是一个长达一年的列表,因此计算 60 分钟 * 24 小时 * 365 天 = 525600 次观察。
我想添加一个名为小时的新列,它确实表示一天中的小时(假设 0-59 分钟是上午 12 点,60-119 分钟是凌晨 1 点,依此类推,直到第二天,序列重新开始)。
然后,一旦添加了小时列,我想按它对观测值进行分组并计算一年中每小时的平均值,最后得到一个包含 24 个观测值的数据框,每个观测值表示每个观测值的原始数据的平均值小时
使用整数和余数除法,您可以获得小时。
df['hour'] = df['minute']//60%24
如果您需要其他日期信息,使用某年(不是闰年)的 1 月 1 日作为原点并转换为datetime
会很有用。 然后你可以获取很多日期属性,在这种情况下是小时。
df['hour'] = pd.to_datetime(df['minute'], unit='m', origin='2017-01-01').dt.hour
然后对于您的平均值,您将获得结果 24 行系列:
df.groupby('hour')['value'].mean()
这是一种方法:
# sample df
df = pd.DataFrame({'minute': np.arange(525600), 'value': np.arange(525600)})
# set time format
df['minute'] = pd.to_timedelta(df['minute'], unit='m')
# calculate mean
df_new = df.groupby(pd.Grouper(key='minute', freq='1H'))['value'].mean().reset_index()
虽然,您不需要明确的hour
列来计算这些值,但是如果您想获得它,您可以通过以下方式进行:
df_new['hour'] = pd.to_datetime(df_new['minute']).dt.hour
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.