我有一个数据框,如下所示
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]})
我想做的是在date列中找到最短和最长的日期,并展开该列以包含所有的日期,同时为val
列填充0
。所以期望的输出是
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
正如@ayhan所说
一行代码主要使用@ayhan的思想,同时合并了
stack
/unstack
和fill_value
初始数据帧:
首先,将日期转换为日期时间:
然后,生成日期和唯一用户:
这将允许您创建多索引:
您可以使用它重新索引数据帧:
然后可以按用户排序:
相关问题 更多 >
编程相关推荐