Как объединить несколько фреймов данных и отсортировать их по отметке времени - Pandas Python - PullRequest
0 голосов
/ 16 марта 2020

Я открываю все файлы данных, преобразую их в фрейм данных и составляю их список. Каждый фрейм данных имеет одинаковую структуру.

Здесь код:

path = r'/home/afdg/Documents/Partage_Ubuntu/XML/Results'
all_csv_files = glob.glob(path + "/*.csv")

list_df = []

for filename in all_csv_files :
  df = pd.read_csv(filename, usecols=['duration', 'begin', 'end', 'time' ])
  df_DisponibilityAlarm = df.copy()
  df_DisponibilityAlarm = df_DisponibilityAlarm.drop(['duration','time'], 1)
  list_df.append(df_DisponibilityAlarm)

Я хотел бы объединить все фреймы данных в один и отсортировать по метке времени. Я пробовал это, но это не работает. Я не знаю, как связать мой список данных с сортировкой. :

df_DisponibilityAlarm = (df_DisponibilityAlarm.stack()
  .rename_axis([None, 'Flag'])
  .reset_index(level=1, name='Timestamp'))

df_DisponibilityAlarm = df_DisponibilityAlarm.sort_values(by=['Timestamp'])

При использовании списка конкатов у меня больше строк, чем в исходных файлах: Форма файлов:

(358, 2)                                                                                             
(1690, 2)                                                                                            
(508, 2)                                                                                             
(3872, 2)                                                                                            
(13129, 2)                                                                                           
(2, 2)                                                                                               
(46, 2)                                                                                              
(92, 2)   

Результат: (19697,2) и после: ( 19708, 2)

11 строк больше

Не могли бы вы мне помочь, пожалуйста?

1 Ответ

2 голосов
/ 16 марта 2020

Вы должны согласовать список фреймов данных:

df_all = pd.concat(list_df)
...