【问题标题】:Binning in pythonpython中的分箱
【发布时间】:2017-07-31 11:42:51
【问题描述】:

例子

输入只有一列。

       Time
       02.10 
       02.40 
       02.50

输出

自从 平均时差为20分钟((30分钟+10分钟)/2),

我需要一个按平均值对数据进行存储的数据框。 它需要将平均时间添加到第一个记录,如果结果时间在数据中,则它属于 bin 1,否则属于 bin 0。 然后继续。

 Desired Output
    Time  - Bin
    02.10 - 1
    02.30 - 0
    02.50 - 1
    03.10 - 0

提前致谢。

【问题讨论】:

  • 我想我起初误解了你的问题,认为你想要某种Time 列的直方图。相反,您似乎只想迭代 starttime + k * average_diff 并查看它们是否在 Time 列中,对吗?
  • 是的。如果结果在时间列中,那么它应该属于 bin 1,否则属于 bin 0。
  • 你想用这个实现什么?似乎第一次和最后一次总是1,输出中的最后一项永远不会(因为根据定义,它比最后一项多),而介于两者之间的项目仅在极少数情况下。
  • 我正在尝试构建一个时间序列。我需要将其作为其中的一部分来实现。那是我提供来理解的样本数据。实际数据有大量记录。

标签: python pandas numpy time-series binning


【解决方案1】:

首先,您应该始终分享您的尝试。

不管怎样,试试这个。它应该工作

mean = df.Time.diff().mean()

start = df.loc[0, 'Time']
end = df.loc[df.shape[1] -1, 'Time']
len = int((end - start)/mean) + 1

timeSeries = [start + i*mean for i in range(len)]

df['Bin'] = 0

df.loc[df['Time'].isin(timeSeries), 'Bin'] = 1

这将按照您的预期创建“Bin”,有条件的是,您将“时间”正确地创建为日期时间。

【讨论】:

    猜你喜欢
    • 2018-04-15
    • 2013-03-19
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 2011-01-03
    相关资源
    最近更新 更多