【发布时间】:2015-11-24 16:18:01
【问题描述】:
我有以下数据框:
Timestamp S_time1 S_time2 End_Time_1 End_time_2 Sign_1 Sign_2
0 2413044 0 0 0 0 x x
1 2422476 0 0 0 0 x x
2 2431908 0 0 0 0 x x
3 2441341 0 0 0 0 x x
4 2541232 2526631 2528631 2520631 2530631 10 80
5 2560273 2544946 2546496 2546496 2548496 40 80
6 2577224 2564010 2566010 2566010 2568010 null null
7 2592905 2580959 2582959 2582959 2584959 null null
桌子就这样继续下去。第一列是以毫秒为单位的时间戳。 S_time1 和 End_time_1 是特定符号(数字)出现的持续时间。例如,如果我们取第 5 行,S_time1 是 2526631,End_time_1 是 2520631,对应的sign_1 是 10,这意味着从 2526631 到 2520631 将显示符号 10。 S_time2 和 End_time_2 也是如此。 sign_2中对应的值会出现在S_time2到End_time_2的持续时间内。
我想在 100 毫秒的 bin 时间内对索引列 (Timestamp) 重新采样,并检查符号所属的 bin 时间。例如,每个开始时间和结束时间之间有 2000 毫秒的差异。因此,相应的符号编号将在大约 20 个连续的 bin 时间中重复出现,因为每个 bin 时间是 100 毫秒。所以我只需要两列:一列是 bin 时间,第二列是标志。如下表所示:(我只是补个bin时间为例)
Bin_time signs
...100 0
...200 0
...300 10
...400 10
...500 10
...600 10
符号 10 将持续对应的 S_time1 到 End_time_1。然后下一个符号 80 持续 S_time2 到 End_time_2 的持续时间。我不确定这是否可以在熊猫中完成。但我真的需要熊猫或其他方法的帮助。
提前感谢您的帮助和建议。
【问题讨论】:
-
我认为您最好将所有列中的时间戳视为整数。我想到的原因是这些似乎是对某个事件进行倒计时的纪元时间,将它们转换为时间戳只会延长您的代码。此外,您只对相对值感兴趣,而不是绝对值。时间戳也更难使用,并且开销更大。我的个人经验也表明
pd.resample()可能不适合你。所以,只需使用直方图函数,或者编写自己的函数来得到你想要的。
标签: python python-2.7 pandas