我有一个如下所示的数据框
x = pd.DataFrame({'user': ['a','a','b','b'], 'dt': ['2016-01-01','2016-01-02', '2016-01-05','2016-01-06'], 'val': [1,33,2,1]})
我想做的是在日期列中找到最小和最大日期并展开该列以包含所有日期,同时填写 0
val
柱子。所以所需的输出是
dt user val
0 2016-01-01 a 1
1 2016-01-02 a 33
2 2016-01-03 a 0
3 2016-01-04 a 0
4 2016-01-05 a 0
5 2016-01-06 a 0
6 2016-01-01 b 0
7 2016-01-02 b 0
8 2016-01-03 b 0
9 2016-01-04 b 0
10 2016-01-05 b 2
11 2016-01-06 b 1
我已经尝试过 这里 和 这里 提到的解决方案,但它们不是我想要的。非常感谢任何指针。
原文由 broccoli 发布,翻译遵循 CC BY-SA 4.0 许可协议
初始数据框:
首先,将日期转换为日期时间:
然后,生成日期和唯一用户:
这将允许您创建一个 MultiIndex:
您可以使用它来重新索引您的 DataFrame:
然后可以按用户排序: