熊猫桶时间戳记放入TimeGrouper频率组

乔治·海勒

我在熊猫中有一个带有DateTime索引的数据框。当使用时间pd.Grouper(freq='360Min')分组器将其分组,如何将该结果重新加入原始时间戳记?即Equijoin join timestamp = bucket不起作用?有便利功能吗?应该使用asof联接吗?还是我必须手动提取小时数,然后尝试进行匹配?

例:

为...的来源

import pandas as pd
df = pd.DataFrame(
   {
       "Publish date": [
            pd.Timestamp("2000-01-02"),
            pd.Timestamp("2000-01-02"),
            pd.Timestamp("2000-01-09"),
            pd.Timestamp("2000-01-16")
        ],
        "ID": [0, 1, 2, 3],
        "Price": [10, 20, 30, 40]
    }
)

这使:

  Publish date  ID  Price
0   2000-01-02   0     10
1   2000-01-02   1     20
2   2000-01-09   2     30
3   2000-01-16   3     40

我想以任意频率(不仅是月,日,小时)执行聚合,假设1

month.

agg_result = df.groupby(pd.Grouper(key="Publish date", freq="1M")).agg([pd.Series.mean, pd.Series.median]).reset_index()
agg_result.columns = ['_'.join(col).strip() for col in agg_result.columns.values]
agg_result.columns = ['Publish date month', 'ID_mean', 'ID_median', 'Price_mean', 'Price_median']
print(agg_result)
Publish date month  ID_mean  ID_median  Price_mean  Price_median
0         2000-01-31      1.5        1.5          25            25

如何确保等分线再次起作用?即使用相同的任意频率将原始时间戳转换为拟合桶?

即在示例代码中描述,我如何获得:

agg_result['Publish date month'] = agg_result['Publish date'].apply(magic transform to same frequency bucket)
df.merge(agg_result, on['Publish date month'])

要工作,即定义对正确存储桶的转换?

亚当·扎尔丁

编辑:

识别每个组的相应原始值的最简单方法应该是:

gb = df.groupby(pd.Grouper(key="Publish date", freq="1M"))
dict(list(gb['Publish date']))

然后,您可以使用它来将任何信息连接回原始表。


您可以只加入两个中间列吗?

df['Publish date'].dt.month

df.groupby(pd.Grouper(key="Publish date", freq="1M")).agg([pd.Series.mean, pd.Series.median]).index.month

像这样

results =  df.groupby(pd.Grouper(key="Publish date", freq="1M")).agg([pd.Series.mean, pd.Series.median])

results.columns = ['-'.join(col[::-1]).strip() for col in results.columns]

df['month'] = df['Publish date'].dt.month

results['month'] = results.index.month
results.merge(df)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章