我有一个从2016/1/1 00:00到2018/11/25 23:00的数据帧(namenddf),每小时有一个时间戳、object\u id和一个值。数据集只包含对象id有值的行
timestampHour object_id value
2016/1/1 00:00 1 2
2016/1/1 00:00 3 1
2016/1/1 01:00 1 1
2016/1/1 01:00 2 3
2016/1/1 02:00 2 3
2016/1/1 02:00 3 2
我想得到一个数据帧,显示每小时的所有对象id,如果没有值,则使用空值
timestampHour object_id value
2016/1/1 00:00 1 2
2016/1/1 00:00 2 null
2016/1/1 00:00 3 1
2016/1/1 01:00 1 1
2016/1/1 01:00 2 3
2016/1/1 01:00 3 null
2016/1/1 02:00 1 null
2016/1/1 02:00 2 3
2016/1/1 02:00 3 2
我已经根据时间戳创建了dateTime。并用以下代码将它们四舍五入到小时:
df["timestamp"] = pd.to_datetime(df["result_timestamp"])
df['timestampHour'] = df['result_timestamp'].dt.round('60min')
(我不知道是否有更好的选择,但我一直在尝试创建timestampHour行,直到12(我有12个每个唯一的对象\u id)并用(该小时的)未使用的对象\u id填充这些新创建的行。但我无法创建空行,条件是)
我是一个相当新的编程,我没有找到一个线索来接近解决这个问题,从搜索其他职位
使用
pivot_table
和unstack
:要了解这一点的原因,可以查看中间的
pivot_table
:如果没有为
object_id
和timestampHour
的组合找到值,则将NaN
添加到表中。当您使用unstack
时,这些NaN
会被保留,这样您就可以得到所需的结果,并表示缺少的值这也是两个水平的笛卡尔积This question详细介绍了针对大型数据集优化产品性能的方法
输出:
相关问题 更多 >
编程相关推荐