我一直在搜索很多东西,但是找不到我的问题的答案。
我有太阳能电池测量数据。数据具有时间戳记值,但没有频率。一小时内值的数量不是恒定的。一小时内可以出现任意数量的值。所以我在努力创造:
i。每小时数据平均值的列。
ii。另一列保存每小时发生的测量次数。这很重要,因为我的时间戳没有固定频率。因此,重要的是要知道在一天的特定时间计算出的平均值是否具有1个或2个或14个测量值。
我的数据框图片:
我的代码:
yr=df.index.year
mon=df.index.month
day= df.index.day
hr = df.index.hour
df.groupby([yr, mon, day, hr])['KP_sensor'].mean()
如何在此数据帧的末尾添加两列(均值列和该小时内发生的测量计数)。
答案 0 :(得分:0)
实际上,考虑到您的问题,使用aggregate
会更好,因为您希望使用多个列作为平均值。
yr=df.index.year
mon=df.index.month
day= df.index.day
hr = df.index.hour
grouped_data = df.groupby([yr, mon, day, hr])
new_data = grouped_data.agg('mean')
new_data['counts'] = grouped_data.transform('count')
答案 1 :(得分:0)
这是许多可能的解决方案之一。您已经完成了一部分。
df["hour"] = df.index.hour
df["date"] = df.index.date
dfMeans = df.groupby(["date", "hour"])[["Sol_Data", "Irr_Unc_perc", "ISF_stable", "KP_sensor", "Tamb"]].mean()
dfMeans.reset_index(inplace=True)
dfHours = pd.DataFrame(df.groupby(["date", "hour"])["hour"].count())
dfHours.columns = ["count"]
dfHours.reset_index(inplace=True)
dfFinal = pd.merge(dfHours, dfMeans, how="left", on=["date","hour"])