У меня есть файл pickle, в котором содержится набор данных. Как часть сценария очистки данных, я загружаю этот пакет и выполняю дополнительную обработку некоторых, но не всех фреймов данных, а затем перезаписываю пакет, который позднее будет выбран и загружен программой моделирования.
Когда япосле этой обработки прочитайте рассылку, все значения, кроме двух, будут правильно распакованы и проанализированы как кадры данных, но оба будут считаны как кортежи. Поскольку эти два на самом деле не требуют каких-либо изменений в этом конкретном сценарии очистки данных, они не обрабатываются сценарием за исключением следующего:
#start of script, read in the pickle assign the dfs for later use.
input_file = sys.argv[1]
with open(input_file, 'rb') as handle:
data = pickle.load(handle)
trips = data['trips'] # this sees additional processing, is correctly written out as a DF.
stops = data['stops'] # this sees additional processing, is correctly written out as a DF.
stop_times = data['stop_times'], # NO additional processing, is INCORRECTLY written out as a tuple.
road_segs = data['road_segs'], # NO additional processing, is INCORRECTLY written out as a tuple.
seg_props = data['seg_props'] # NO additional processing, is correctly written out as a df.
... # do additional processing on trips and stops
#Output the update DFs and carry the unaltered DFs through to overwrite the original pickle.
data = {
"trips": trips,
"stops": stops,
"stop_times": stop_times,
"road_segs": road_segs,
"seg_props": seg_props
}
with open(input_file, 'wb') as handle:
pickle.dump(data, handle, protocol=4)
Если я прочитал рассол перед тем, как запустить его, хотя этот сценарий я получаюпоследующий.
[type(val) for val in gtfs.values()]
#output
[pandas.core.frame.DataFrame,
geopandas.geodataframe.GeoDataFrame,
pandas.core.frame.DataFrame,
pandas.core.frame.DataFrame,
pandas.core.frame.DataFrame]
и после:
[type(val) for val in gtfs.values()]
Out[17]:
[pandas.core.frame.DataFrame,
pandas.core.frame.DataFrame,
tuple,
tuple,
pandas.core.frame.DataFrame]
эти кортежи также сильно вложены:
((( trip_id stop_id stop_duation
0 15243854-AUG19-MVS-BUS-Weekday-01 17894 0.0
1 15243854-AUG19-MVS-BUS-Weekday-01 17897 0.0
2 15243854-AUG19-MVS-BUS-Weekday-01 17900 0.0
[2812369 rows x 3 columns],),),)