我有这样的数据,
ID datetime
0 2 2015-01-09 19:05:39
1 1 2015-01-10 20:33:38
2 1 2015-01-10 21:10:00
我已将此日期时间转换为 unix 时间戳
ID timestamp
0 2 1420830339
1 1 1420922018
2 1 1420924200
我想首先将 unix 时间戳转换为 EST 标准,然后将每行划分为 10 分钟间隔。我需要一列来指示该行属于哪个垃圾箱。
我的最小日期时间是 2015-01-01 00:00:00,我只有 2015 年 1 月 1 日到 31 日的数据。
如何使用 python 或 pandas 实现此目的。
最佳答案
使用date_range
与 cut
按 10 分钟进行分箱:
df['datetime'] = pd.to_datetime(df['datetime'])
bins = pd.date_range('2015-01-01', '2015-02-01', freq='10T')
df['bins'] = pd.cut(df['datetime'], bins)
df['lab'] = pd.cut(df['datetime'], bins, labels=False)
df['bins_left'] = pd.IntervalIndex(pd.cut(df['datetime'], bins)).left
df['bins_right'] = pd.IntervalIndex(pd.cut(df['datetime'], bins)).right
df['bins_left_unix'] = df['bins_left'].to_numpy().astype(np.int64) // 10**9
df['bins_right_unix'] = df['bins_right'].to_numpy().astype(np.int64) // 10**9
print (df)
ID datetime bins lab \
0 2 2015-01-09 19:05:39 (2015-01-09 19:00:00, 2015-01-09 19:10:00] 1266
1 1 2015-01-10 20:33:38 (2015-01-10 20:30:00, 2015-01-10 20:40:00] 1419
2 1 2015-01-10 21:10:00 (2015-01-10 21:00:00, 2015-01-10 21:10:00] 1422
bins_left bins_right bins_left_unix bins_right_unix
0 2015-01-09 19:00:00 2015-01-09 19:10:00 1420830000 1420830600
1 2015-01-10 20:30:00 2015-01-10 20:40:00 1420921800 1420922400
2 2015-01-10 21:00:00 2015-01-10 21:10:00 1420923600 1420924200
关于python - 如何将unix时间戳时间分成10分钟间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57370083/