对于如何描述不知所措。我有一个数据集,我想按日期时间顺序保存,但是不知何故小时值变得混乱,我也希望它按升序排列,即1,2,3。...我尝试了df.group([ 'XX','hour'])。sort_by('hour');并使用.groupby()。size('hour')。在不分解XX值的情况下看不到该怎么做。
我现在所拥有的...
id ## datetime ## hour ## XX ## YY
0 2018/01/01 2 chairs 5
1 2018/01/01 1 chairs 3
2 2018/01/01 3 chairs 6
3 2018/01/01 3 tables 7
4 2018/01/01 1 tables 9
5 2018/01/01 2 tables 2
6 2018/01/02 2 chairs 2
7 2018/01/02 1 chairs 3
8 2018/01/02 3 chairs 6
9 2018/01/02 2 tables 2
10 2018/01/02 3 tables 3
11 2018/01/02 1 tables 5
我一直追求的目标...
id ## datetime ## hour ## XX ## YY
0 2018/01/01 1 chairs 3
1 2018/01/01 2 chairs 5
2 2018/01/01 3 chairs 6
3 2018/01/01 1 tables 9
4 2018/01/01 2 tables 2
5 2018/01/01 3 tables 7
6 2018/01/02 1 chairs 3
7 2018/01/02 2 chairs 2
8 2018/01/02 3 chairs 6
9 2018/01/02 1 tables 5
10 2018/01/02 2 tables 2
11 2018/01/02 3 tables 3
为时髦的图表表示歉意,对您的帮助表示赞赏!
答案 0 :(得分:1)
您可以先使用cumcount
,然后使用sort_values
new_df=df.assign(helperkey=df.groupby('hour').cumcount()).sort_values(['datetime','helperkey','hour'])
new_df
Out[524]:
id datetime hour XX YY helperkey
1 1 2018/01/01 1 chairs 3 0
0 0 2018/01/01 2 chairs 5 0
2 2 2018/01/01 3 chairs 6 0
4 4 2018/01/01 1 tables 9 1
5 5 2018/01/01 2 tables 2 1
3 3 2018/01/01 3 tables 7 1
7 7 2018/01/02 1 chairs 3 2
6 6 2018/01/02 2 chairs 2 2
8 8 2018/01/02 3 chairs 6 2
11 11 2018/01/02 1 tables 5 3
9 9 2018/01/02 2 tables 2 3
10 10 2018/01/02 3 tables 3 3