мой вопрос касается разделения фреймов данных на несколько фреймов данных. Исходный кадр данных показан в [ FIGURE_1 ]. Его следует разделить на определенное значение, например, NaN [ FIGURE_2 ].
В моем обычном кадре данных гораздо больше миллиона строк и 16 столбцов, поэтому мне нужно решение с оптимизированной производительностью, пожалуйста.
Мне срочно требуется разделение для последующей обработки.
FIGURE_1 текущий кадр данных
PacketID TraceTime Size
0 0.3948 -- --
1 0.3949 01.01.1970 00:12:39.298 77
2 0.3950 01.01.1970 00:12:39.298 80
3 0.3951 01.01.1970 00:12:39.315 81
4 0.3952 01.01.1970 00:12:39.335 78
5 0.3953 01.01.1970 00:12:39.335 71
. . . . .
. . . . .
395926 7.11074 01.01.1970 00:48:42.829 1666
395927 7.11075 01.01.1970 00:48:42.829 57
395928 7.11076 01.01.1970 00:48:42.851 57
395929 #----- END: log_0000.log: session #0
395930 #----- BEGIN: log_0000.log: session #1
395931 PacketID TraceTime Size
395932 7.14891 -- --
395933 7.14892 01.01.1970 00:00:19.313 80
395934 7.14893 01.01.1970 00:00:19.313 61
. . . . .
. . . . .
753533 13.19876 01.01.1970 00:31:56.374 60
753534 13.19877 01.01.1970 00:31:56.380 57
753535 13.19878 01.01.1970 00:31:56.380 57
753536 #----- END: log_0000.log: session #1
753537 #----- BEGIN: log_0000.log: session #2
753538 PacketID TraceTime Size
753539 13.23802 -- --
753540 13.23803 01.01.1970 00:00:48.777 17
753541 13.23804 01.01.1970 00:00:48.802 1
and so on...
FIGURE_2 требуемые кадры данных
df_1 =
PacketID TraceTime Size
0 0.3948 -- --
1 0.3949 01.01.1970 00:12:39.298 77
2 0.3950 01.01.1970 00:12:39.298 80
. . . . .
. . . . .
395919 7.11067 01.01.1970 00:48:42.602 38
395920 7.11068 01.01.1970 00:48:42.602 54
395921 7.11069 01.01.1970 00:48:42.602 38
395922 7.11070 01.01.1970 00:48:42.629 57
df_2 =
395931 PacketID TraceTime Size
395932 7.14891 -- --
395933 7.14892 01.01.1970 00:00:19.313 80
395934 7.14893 01.01.1970 00:00:19.313 61
395935 7.14894 01.01.1970 00:00:19.313 110
. . . . .
. . . . .
753532 13.19875 01.01.1970 00:31:56.374 63
753533 13.19876 01.01.1970 00:31:56.374 60
753534 13.19877 01.01.1970 00:31:56.380 57
753535 13.19878 01.01.1970 00:31:56.380 57
df_3 =
753538 PacketID TraceTime Size
753539 13.23802 -- --
753540 13.23803 01.01.1970 00:00:48.777 17
753541 13.23804 01.01.1970 00:00:48.802 1
and so on...
У меня уже есть опция [ FIGURE_3 ], но она устарела и будет удалена в будущем.
FIGURE_3
Python:
dense_ts = df['TraceTime']
sparse_ts = dense_ts.to_sparse()
block_locs = zip(sparse_ts.sp_index.blocs, sparse_ts.sp_index.blengths)
blocks = [dense_ts.iloc[start:(start + length - 1)] for (start, length) in block_locs]
Warning:
C:\Users\andre\Anaconda3\lib\site-packages\ipykernel_launcher.py:15: FutureWarning: Series.to_sparse is deprecated and will be removed in a future version from ipykernel import kernelapp as app