【问题标题】:Pandas timeseries, binning on one columnn and accumulate time spent in the bins熊猫时间序列,在一列上分箱并累积在箱中花费的时间
【发布时间】:2013-08-29 11:49:47
【问题描述】:

我在使用 pandas 进行分箱时遇到问题! 这是一个简化的示例: 我有一个数据框 df

     time  speed
0    0.1     20
1    0.2     20
2    0.3     30
3    0.4     30
4    0.5     40
5    0.6     40
6    0.7     40
7    0.8     40
8    0.9     50
9    1.0     50
10   1.1     60
11   1.2     70
12   1.3     80
13   1.4     80
14   1.5     80
15   1.6     80
16   1.7     40
17   1.8     40
18   1.9     40

这是我想做的: 我想对速度数据进行分类,例如 bins = [0,20,40,60,80]。 然后,我希望根据速度分箱对时间列值进行分箱。 之后,我想在垃圾箱中累积时间并绘制直方图。 请帮忙

【问题讨论】:

标签: python pandas time-series binning


【解决方案1】:
In [117]: binned_time = df.groupby(pd.cut(df.speed, bins=[0,20,40,60,80]))['time']                                                                                                                                                                                        

In [118]: binned_time.sum()
Out[118]: 
speed
(0, 20]     0.30
(20, 40]    3.30
(40, 60]    1.11
(60, 80]    1.24
Name: time, dtype: float64

【讨论】:

  • 差不多了!!,我应该说时间列是一个时间序列。那么有没有办法累计每个 bin 所花费的时间呢?
  • 这取决于时间的表示方式。如果作为时间戳,那么我假设您想减去 bin 中的最高和最低时间戳。如果 time columnn 是 timedelta 对象,sum() 仍然可以使用。
  • 我有一个随时间变化的速度信号,上面有简短的更新描述。我不确定从那个 bin 中的最低值中减去最高值是否会给我在那个速度 bin 中的累积时间。
  • 在这种情况下高低是不行的。您需要决定如何计算时间/bin,而不是转换为 pandas。
  • 我想我需要帮助,有什么想法吗?
猜你喜欢
  • 2014-12-17
  • 2021-11-26
  • 2019-05-11
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 2019-10-30
  • 2019-01-23
  • 2020-07-12
相关资源
最近更新 更多