我有以下格式的数据框。我想为每个客户添加空行以缺少时间戳。
catalog
结果表的格式应为
+-------------+----------+------+----+----+
| Customer_ID | TimeSlot | A1 | A2 | An |
+-------------+----------+------+----+----+
| c1 | 1 | 10.0 | 2 | 3 |
| c1 | 2 | 11 | 2 | 4 |
| c1 | 4 | 12 | 3 | 5 |
| c2 | 2 | 13 | 2 | 7 |
| c2 | 3 | 11 | 2 | 2 |
+-------------+----------+------+----+----+
我有100万客户和360(在上面的示例中只描绘了4个)时隙。 我找到了一种方法来创建一个包含2列(Customer_id,Timeslot)的数据帧(1 M x 360行),并使用原始数据帧进行左外连接。
有更好的方法吗?
答案 0 :(得分:3)
您可以将其表达为SQL查询:
{{1}}
注意:
答案 1 :(得分:0)
我认为可以使用gordon linoff的答案,但你可以添加以下thinsg,因为你声明有数百万的客户并且你正在进行加入。
为TimeSlot使用计数表?因为它可能会带来更好的表现。 更多可用性请参考以下链接
http://www.sqlservercentral.com/articles/T-SQL/62867/
我认为您应该使用分区或行号功能来划分列customerid并根据某个分区值选择客户。例如,只需选择行号值,然后与计数表交叉连接。它可以改善你的表现。