对于具有DatetimeIndex的DataFrame,如何添加新列作为重新采样的DatetimeIndex的集合?

时间:2018-08-28 01:50:53

标签: python pandas datetime

我有一个带有DatetimeIndex的DataFrame,我想创建一个新列,该列是另一列的聚集,由Datetime聚集,频率较慢。例如,小时值和一天中的每日平均值属于以下部分:

[index]                A   A_daily_mean
2018-08-01  00:00:00   6   7.5
2018-08-02  01:00:00   7   7.5
2018-08-03  02:00:00   8   7.5
2018-08-04  03:00:00   9   7.5

为此有一个班轮吗?

这对于其他groupby聚合(非日期时间)非常容易:

df['groupby_mean'] = df.groupby([col1, col2]).mean()

但是在DatetimeIndex的日期上分组失败很不幸:

df['mean_of_resampled'] = df.groupby(df.index.date).mean()

或者

df['mean_of_resampled'] = df.resample('1d').mean()

两者都给出:

[index]                A   A_daily_mean
2018-08-01  00:00:00   6   7.5
2018-08-01  01:00:00   7   NaN
2018-08-01  02:00:00   8   NaN
2018-08-01  03:00:00   9   NaN

我知道我可以通过合并或联接来添加值,但是我想知道是否缺少一些更好,更快乐的方法。

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找transform(),例如:

In []:
df['A_daily_mean'] = df.groupby(df.index.date).transform('mean')
df

Out[]:
                     A  A_daily_mean
2018-08-01 00:00:00  6           7.5
2018-08-01 01:00:00  7           7.5
2018-08-01 02:00:00  8           7.5
2018-08-01 03:00:00  9           7.5