我有一个包含3列的数据框(“日期(UTC)”、“X”和“Y”)
Date (UTC) X Y
0 2020-01-01 00:00:00 2.4497 30.8736
1 2020-01-01 01:00:00 3.4148 30.1853
2 2020-01-01 02:00:00 2.6045 32.4904
3 2020-01-01 03:00:00 1.7704 32.5102
4 2020-01-01 04:00:00 -7.1172 25.1757
... ... ... ...
5784 2020-08-22 18:23:59 -15.0077 -11.4135
5785 2020-08-22 19:23:59 -13.9187 -12.5453
5786 2020-08-22 20:23:59 -13.5544 -14.0992
5787 2020-08-22 21:23:59 -10.0891 -17.9784
5788 2020-08-22 22:23:59 -6.8927 -16.5153
我希望输出有额外的列,以便:
正如我在工作表中制作的下面的示例输出所示
Date (UTC) X Y Date_Asc Time_Asc X_Asc \
0 2020-01-01 00:00:00 2.4497 30.8736 2020-01-01 00:00:00 2.4497
1 2020-01-01 01:00:00 3.4148 30.1853 2020-01-01 01:00:00 3.4148
2 2020-01-01 02:00:00 2.6045 32.4904 2020-01-01 02:00:00 2.6045
3 2020-01-01 03:00:00 1.7704 32.5102 2020-01-01 03:00:00 1.7704
4 2020-01-01 04:00:00 -7.1172 25.1757 2020-01-01 04:00:00 -7.1172
5 2020-01-01 05:00:00 -15.4088 24.4337 2020-01-01 05:00:00 -15.4088
6 2020-01-01 06:00:00 -27.3290 29.6146 2020-01-01 06:00:00 -27.3290
7 2020-01-01 07:00:00 -35.1151 34.9471 2020-01-01 07:00:00 -35.1151
8 2020-01-01 08:00:00 -42.1931 40.1325 2020-01-01 08:00:00 -42.1931
9 2020-01-01 09:00:00 -38.2346 38.4806 2020-01-01 09:00:00 -38.2346
10 2020-01-01 10:00:00 -34.8297 33.7403 2020-01-01 10:00:00 -34.8297
11 2020-01-01 11:00:00 -34.1078 33.0918 2020-01-01 11:00:00 -34.1078
12 2020-01-01 12:00:00 -35.3642 30.9796 2020-01-01 12:00:00 -35.3642
13 2020-01-01 13:00:00 -33.9252 30.8584 2020-01-01 13:00:00 -33.9252
14 2020-01-01 14:00:00 -32.2875 32.0968 2020-01-01 14:00:00 -32.2875
15 2020-01-01 15:00:00 -28.5886 30.5157 2020-01-01 15:00:00 -28.5886
16 2020-01-01 16:00:00 -26.2631 28.5850 2020-01-01 16:00:00 -26.2631
17 2020-01-01 17:00:00 -24.9291 27.7629 2020-01-01 17:00:00 -24.9291
18 2020-01-01 18:00:00 -20.9242 28.1081 2020-01-01 18:00:00 -20.9242
19 2020-01-01 19:00:00 -19.3358 28.4239 2020-01-01 19:00:00 -19.3358
20 2020-01-01 20:00:00 -18.8498 27.5946 2020-01-01 20:00:00 -18.8498
21 2020-01-01 21:00:00 -17.6154 27.5777 2020-01-01 21:00:00 -17.6154
22 2020-01-01 22:00:00 -17.5111 27.6045 2020-01-01 22:00:00 -17.5111
23 2020-01-01 23:00:00 -17.8218 30.6621 2020-01-01 23:00:00 -17.8218
24 2020-01-02 00:00:00 -18.2261 32.9834 2020-01-02 00:00:00 -18.2261
25 2020-01-02 01:00:00 -19.1256 33.9799 2020-01-02 01:00:00 -19.1256
26 2020-01-02 02:00:00 -22.5682 33.0480 2020-01-02 02:00:00 -22.5682
27 2020-01-02 03:00:00 -28.0774 34.2475 2020-01-02 03:00:00 -28.0774
28 2020-01-02 04:00:00 -36.0161 28.1081 2020-01-02 04:00:00 -36.0161
29 2020-01-02 05:00:00 -39.8972 32.2631 2020-01-02 05:00:00 -39.8972
30 2020-01-02 06:00:00 -37.7294 33.6043 2020-01-02 06:00:00 -37.7294
31 2020-01-02 07:00:00 -29.6897 31.3064 2020-01-02 07:00:00 -29.6897
32 2020-01-02 08:00:00 -18.4394 26.5454 2020-01-02 08:00:00 -18.4394
33 2020-01-02 09:00:00 -14.2478 29.2039 2020-01-02 09:00:00 -14.2478
34 2020-01-02 10:00:00 -11.6615 26.4184 2020-01-02 10:00:00 -11.6615
35 2020-01-02 11:00:00 -8.2162 26.8972 2020-01-02 11:00:00 -8.2162
36 2020-01-02 12:00:00 -4.4618 25.9781 2020-01-02 12:00:00 -4.4618
37 2020-01-02 13:00:00 -2.4028 26.8930 2020-01-02 13:00:00 -2.4028
38 2020-01-02 14:00:00 -1.1351 27.6698 2020-01-02 14:00:00 -1.1351
39 2020-01-02 15:00:00 2.3592 27.3872 2020-01-02 15:00:00 2.3592
40 2020-01-02 16:00:00 4.5456 29.5461 2020-01-02 16:00:00 4.5456
41 2020-01-02 17:00:00 6.6295 31.3422 2020-01-02 17:00:00 6.6295
42 2020-01-02 18:00:00 7.6197 32.0937 2020-01-02 18:00:00 7.6197
43 2020-01-02 19:00:00 8.6444 31.9142 2020-01-02 19:00:00 8.6444
44 2020-01-02 20:00:00 8.1178 31.5972 2020-01-02 20:00:00 8.1178
45 2020-01-02 21:00:00 7.0879 29.9666 2020-01-02 21:00:00 7.0879
46 2020-01-02 22:00:00 5.9424 29.3420 2020-01-02 22:00:00 5.9424
47 2020-01-02 23:00:00 4.1502 31.9366 2020-01-02 23:00:00 4.1502
Y_Asc Date_Desc Time_Desc X_Dsc Y_Dsc X_Difference \
0 30.8736 2020-01-01 23:00:00 -17.8218 30.6621 -20.2715
1 30.1853 2020-01-01 22:00:00 -17.5111 27.6045 -20.9259
2 32.4904 2020-01-01 21:00:00 -17.6154 27.5777 -20.2199
3 32.5102 2020-01-01 20:00:00 -18.8498 27.5946 -20.6202
4 25.1757 2020-01-01 19:00:00 -19.3358 28.4239 -12.2186
5 24.4337 2020-01-01 18:00:00 -20.9242 28.1081 -5.5154
6 29.6146 2020-01-01 17:00:00 -24.9291 27.7629 2.3999
7 34.9471 2020-01-01 16:00:00 -26.2631 28.5850 8.8520
8 40.1325 2020-01-01 15:00:00 -28.5886 30.5157 13.6045
9 38.4806 2020-01-01 14:00:00 -32.2875 32.0968 5.9471
10 33.7403 2020-01-01 13:00:00 -33.9252 30.8584 0.9045
11 33.0918 2020-01-01 12:00:00 -35.3642 30.9796 -1.2564
12 30.9796 2020-01-01 11:00:00 -34.1078 33.0918 1.2564
13 30.8584 2020-01-01 10:00:00 -34.8297 33.7403 -0.9045
14 32.0968 2020-01-01 09:00:00 -38.2346 38.4806 -5.9471
15 30.5157 2020-01-01 08:00:00 -42.1931 40.1325 -13.6045
16 28.5850 2020-01-01 07:00:00 -35.1151 34.9471 -8.8520
17 27.7629 2020-01-01 06:00:00 -27.3290 29.6146 -2.3999
18 28.1081 2020-01-01 05:00:00 -15.4088 24.4337 5.5154
19 28.4239 2020-01-01 04:00:00 -7.1172 25.1757 12.2186
20 27.5946 2020-01-01 03:00:00 1.7704 32.5102 20.6202
21 27.5777 2020-01-01 02:00:00 2.6045 32.4904 20.2199
22 27.6045 2020-01-01 01:00:00 3.4148 30.1853 20.9259
23 30.6621 2020-01-01 00:00:00 2.4497 30.8736 20.2715
24 32.9834 2020-01-02 23:00:00 4.1502 31.9366 22.3763
25 33.9799 2020-01-02 22:00:00 5.9424 29.3420 25.0680
26 33.0480 2020-01-02 21:00:00 7.0879 29.9666 29.6561
27 34.2475 2020-01-02 20:00:00 8.1178 31.5972 36.1952
28 28.1081 2020-01-02 19:00:00 8.6444 31.9142 44.6605
29 32.2631 2020-01-02 18:00:00 7.6197 32.0937 47.5169
30 33.6043 2020-01-02 17:00:00 6.6295 31.3422 44.3589
31 31.3064 2020-01-02 16:00:00 4.5456 29.5461 34.2353
32 26.5454 2020-01-02 15:00:00 2.3592 27.3872 20.7986
33 29.2039 2020-01-02 14:00:00 -1.1351 27.6698 13.1127
34 26.4184 2020-01-02 13:00:00 -2.4028 26.8930 9.2587
35 26.8972 2020-01-02 12:00:00 -4.4618 25.9781 3.7544
36 25.9781 2020-01-02 11:00:00 -8.2162 26.8972 -3.7544
37 26.8930 2020-01-02 10:00:00 -11.6615 26.4184 -9.2587
38 27.6698 2020-01-02 09:00:00 -14.2478 29.2039 -13.1127
39 27.3872 2020-01-02 08:00:00 -18.4394 26.5454 -20.7986
40 29.5461 2020-01-02 07:00:00 -29.6897 31.3064 -34.2353
41 31.3422 2020-01-02 06:00:00 -37.7294 33.6043 -44.3589
42 32.0937 2020-01-02 05:00:00 -39.8972 32.2631 -47.5169
43 31.9142 2020-01-02 04:00:00 -36.0161 28.1081 -44.6605
44 31.5972 2020-01-02 03:00:00 -28.0774 34.2475 -36.1952
45 29.9666 2020-01-02 02:00:00 -22.5682 33.0480 -29.6561
46 29.3420 2020-01-02 01:00:00 -19.1256 33.9799 -25.0680
47 31.9366 2020-01-02 00:00:00 -18.2261 32.9834 -22.3763
Y_Difference
0 -0.2115
1 -2.5808
2 -4.9127
3 -4.9156
4 3.2482
5 3.6744
6 -1.8517
7 -6.3621
8 -9.6168
9 -6.3838
10 -2.8819
11 -2.1122
12 2.1122
13 2.8819
14 6.3838
15 9.6168
16 6.3621
17 1.8517
18 -3.6744
19 -3.2482
20 4.9156
21 4.9127
22 2.5808
23 0.2115
24 -1.0468
25 -4.6379
26 -3.0814
27 -2.6503
28 3.8061
29 -0.1694
30 -2.2621
31 -1.7603
32 0.8418
33 -1.5341
34 0.4746
35 -0.9191
36 0.9191
37 -0.4746
38 1.5341
39 -0.8418
40 1.7603
41 2.2621
42 0.1694
43 -3.8061
44 2.6503
45 3.0814
46 4.6379
47 1.0468
我试着这样编码:
df = pd.read_csv(i, parse_dates=[" Date (UTC)"])
ascending_data = pd.DataFrame()
ascending_data = df.sort_values(by=[" Date (UTC)"])
ascending_data['Date_Asc'] = [d.date() for d in ascending_data[' Date (UTC)']]
ascending_data['Time_Asc'] = [d.time() for d in ascending_data[' Date (UTC)']]
ascending_data['X_Asc'] = df['X']
ascending_data['Y_Asc'] = df['Y']
print(ascending_data)
descending_data = pd.DataFrame()
descending_data = df.sort_values(by=[" Date (UTC)"], ascending=False)
descending_data['Date_Desc'] = [d.date() for d in descending_data[' Date (UTC)']]
descending_data['Time_Desc'] = [d.time() for d in descending_data[' Date (UTC)']]
descending_data['X_Desc'] = df['X']
descending_data['Y_Desc'] = df['Y']
descending_data = descending_data.reset_index(drop=True)
print(descending_data)
result = pd.concat([ascending_data, descending_data], axis=1)
result['X_Diff'] = result['X_Desc'] - result['X_Asc']
result['Y_Diff'] = result['Y_Desc'] - result['Y_Asc']
print(result)
但结果是
Date (UTC) X Y Date_Asc Time_Asc X_Asc \
0 2020-01-01 00:00:00 2.4497 30.8736 2020-01-01 00:00:00 2.4497
1 2020-01-01 01:00:00 3.4148 30.1853 2020-01-01 01:00:00 3.4148
2 2020-01-01 02:00:00 2.6045 32.4904 2020-01-01 02:00:00 2.6045
3 2020-01-01 03:00:00 1.7704 32.5102 2020-01-01 03:00:00 1.7704
4 2020-01-01 04:00:00 -7.1172 25.1757 2020-01-01 04:00:00 -7.1172
... ... ... ... ... ... ...
5784 2020-08-22 18:23:59 -15.0077 -11.4135 2020-08-22 18:23:59 -15.0077
5785 2020-08-22 19:23:59 -13.9187 -12.5453 2020-08-22 19:23:59 -13.9187
5786 2020-08-22 20:23:59 -13.5544 -14.0992 2020-08-22 20:23:59 -13.5544
5787 2020-08-22 21:23:59 -10.0891 -17.9784 2020-08-22 21:23:59 -10.0891
5788 2020-08-22 22:23:59 -6.8927 -16.5153 2020-08-22 22:23:59 -6.8927
Y_Asc Date (UTC) X Y Date_Dsc Time_Dsc \
0 30.8736 2020-08-22 22:23:59 -6.8927 -16.5153 2020-08-22 22:23:59
1 30.1853 2020-08-22 21:23:59 -10.0891 -17.9784 2020-08-22 21:23:59
2 32.4904 2020-08-22 20:23:59 -13.5544 -14.0992 2020-08-22 20:23:59
3 32.5102 2020-08-22 19:23:59 -13.9187 -12.5453 2020-08-22 19:23:59
4 25.1757 2020-08-22 18:23:59 -15.0077 -11.4135 2020-08-22 18:23:59
... ... ... ... ... ... ...
5784 -11.4135 2020-01-01 04:00:00 -7.1172 25.1757 2020-01-01 04:00:00
5785 -12.5453 2020-01-01 03:00:00 1.7704 32.5102 2020-01-01 03:00:00
5786 -14.0992 2020-01-01 02:00:00 2.6045 32.4904 2020-01-01 02:00:00
5787 -17.9784 2020-01-01 01:00:00 3.4148 30.1853 2020-01-01 01:00:00
5788 -16.5153 2020-01-01 00:00:00 2.4497 30.8736 2020-01-01 00:00:00
X_Dsc Y_Dsc X_Diff Y_Diff
0 -6.8927 -16.5153 -9.3424 -47.3889
1 -10.0891 -17.9784 -13.5039 -48.1637
2 -13.5544 -14.0992 -16.1589 -46.5896
3 -13.9187 -12.5453 -15.6891 -45.0555
4 -15.0077 -11.4135 -7.8905 -36.5892
... ... ... ... ...
5784 -7.1172 25.1757 7.8905 36.5892
5785 1.7704 32.5102 15.6891 45.0555
5786 2.6045 32.4904 16.1589 46.5896
5787 3.4148 30.1853 13.5039 48.1637
5788 2.4497 30.8736 9.3424 47.3889
您可以从原始日期列创建包含日期和时间的新列:
但是,我不建议按排序顺序命名列,因为假设有两列:
Date Asc
和Date Desc
-这没有任何意义,因为数据不能同时按升序和降序排序,除非它是一个单值序列,但即使这样,两列也将包含相同的数据。因此,您应该调用Date
和Time
列,如果需要对整个数据帧进行永久性排序,请使用:如果需要计算按不同顺序排序的数据坐标之间的差异,可以通过以下方式进行计算:
因此,正如您所看到的,列中数据的顺序无关紧要,因为您可以按任何顺序强制转换数据帧以执行列或行操作,并将结果保存在新列中,但您必须确保新列中数据的顺序与数据帧的顺序相匹配,例如,如果数据帧未排序,但新列已排序,则会出现行不匹配
相关问题 更多 >
编程相关推荐