датафрейм анализируется как кортеж при чтении с рассола - PullRequest
0 голосов
/ 16 октября 2019

У меня есть файл 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],),),)

1 Ответ

0 голосов
/ 16 октября 2019

У меня есть две висячие запятые

stop_times = data['stop_times'],
road_segs  = data['road_segs'],

в моем импорте, которые вызывают это. Как я не заметил этого после того, как смотрел на это снова и снова, мне не под силу.

...