我正在尝试创建两个熊猫数据框。
我要处理的数据是每月的几天。以下示例显示了跨越两个月的日期。您可以看到第一天是该月的19日。然后,该列数据将一直持续到下个月的19日。
我需要一种将数据分成两个数据帧的方法-第一个df从19-30开始,第二个df从01-19开始。
这是我现在的df。
Days
0 19
1 20
2 21
3 22
4 23
5 24
6 25
7 26
8 27
9 28
10 29
11 30
12 1
13 2
14 3
15 4
16 5
17 6
18 7
19 8
20 9
21 10
22 11
23 12
24 13
25 14
26 15
27 16
28 17
29 18
30 19
我需要数据框看起来像这样:
df - Number 1
0 19
1 20
2 21
3 22
4 23
5 24
6 25
7 26
8 27
9 28
10 29
11 30
df - Number 2
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
我尝试使用.shift
方法检查以前的值是否大于下一个值,但这只能用于查找月份的结束时间。
timesheet_df['match'] = timesheet_df.Days > timesheet_df.Days.shift()
答案 0 :(得分:3)
使用diff
和cumsum
创建密钥,groupby
将子组保存到dict
d={x : y for x , y in df.groupby(df.Days.diff().lt(0).cumsum())}