【问题标题】:Temporal Binning in PandasPandas 中的时间分箱
【发布时间】:2014-01-30 16:12:28
【问题描述】:

我想在 Pandas 中执行类似于 SQL groupby 操作或 R 聚合的操作。我有一堆带有不规则时间戳的行,我想创建临时箱并计算落入每个箱的行数。我不太明白如何使用 resample 来做到这一点

示例行

Time, Val

05.33, XYZ  
05.45, ABC  
07.13, DEF  

示例输出

05.00-06.00, 2  
06.00-07.00, 0  
07.00-08.00, 1

【问题讨论】:

  • 这些是 hh:mm 次吗?

标签: python pandas


【解决方案1】:

如果您要索引另一个值,您可以在时间戳上使用 groupby 语句。

In [1]:  dft = pd.DataFrame({'A' : ['spam', 'eggs', 'spam', 'eggs'] * 6,
                    'B' : np.random.randn(24),
                    'C' : [np.random.choice(pd.date_range(datetime.datetime(2013,1,1,0,0,0),datetime.datetime(2013,1,2,0,0,0),freq='T')) for i in range(24)]})
In [2]: dft['B'].groupby([dft['C'].apply(lambda x:x.hour)]).agg(pd.Series.nunique)
Out[2]:
C
2     1
4     1
6     1
7     1
9     1
10    2
11    1
12    4
14    1
15    2
16    1
18    3
19    1
20    1
21    1
22    1
23    1
dtype: float64

如果您要对时间戳进行索引,则可以使用重新采样。

In [3]: dft2 = pd.DataFrame({'A' : ['spam', 'eggs', 'spam', 'eggs'] * 6,
               'B' : np.random.randn(24)},
               index = [np.random.choice(pd.date_range(datetime.datetime(2013,1,1,0,0,0),datetime.datetime(2013,1,2,0,0,0),freq='T')) for i in range(24)])
In [4]: dft2.resample('H',how=pd.Series.nunique)
Out[4]: 

                     A   B
2013-01-01 01:00:00  1   1
2013-01-01 02:00:00  0   0
2013-01-01 03:00:00  0   0
2013-01-01 04:00:00  0   0
2013-01-01 05:00:00  2   2
2013-01-01 06:00:00  2   3
2013-01-01 07:00:00  1   2
2013-01-01 08:00:00  2   2
2013-01-01 09:00:00  1   1
2013-01-01 10:00:00  2   3
2013-01-01 11:00:00  1   1
2013-01-01 12:00:00  1   2
2013-01-01 13:00:00  0   0
2013-01-01 14:00:00  1   1
2013-01-01 15:00:00  0   0
2013-01-01 16:00:00  1   1
2013-01-01 17:00:00  1   2
2013-01-01 18:00:00  0   0
2013-01-01 19:00:00  0   0
2013-01-01 20:00:00  2   2
2013-01-01 21:00:00  1   1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-15
    • 2021-04-25
    • 2021-03-15
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多