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

#python #pandas #dataframe

Вопрос:

Я хочу объединить 2 кадра данных по вертикали, но я получаю эту ошибку:

Переиндексирование допустимо только для объектов индекса с уникальными значениями

Как я могу это исправить?

df1

 TimeStamp Input X Y Time Distance Speed Pressure Tilt_X Tilt_X  16 79769.0 aaaaa 8898 8438 NaN NaN NaN None None None  17 79784.0 aaaaa 8898 8438 15.0 0.0 0.0 None None None  18 79793.0 aaaaa 8898 8438 9.0 0.0 0.0 None None None  19 79802.0 aaaaa 8898 8438 9.0 0.0 0.0 None None None  

df2

 TimeStamp Input X Y Time Distance Speed Pressure Tilt_X Tilt_Y  26 84456.0 bbb 8762 9318 NaN NaN NaN 0 0 0  27 84459.0 bbb 8762 9318 3.0 0.0 0.0 4069 -1397 -1445  28 84459.0 bbb 8762 9318 0.0 0.0 0.0 4069 -1397 -1445  29 84464.0 bbb 8762 9318 5.0 0.0 0.0 3944 -1397 -1445  30 84472.0 bbb 8762 9318 8.0 0.0 0.0 3692 -1397 -1445  31 84482.0 bbb 8741 9253 10.0 0.6 0.0 3317 -1397 -1445  

Я хочу присоединиться к этому:

 TimeStamp Input X Y Time Distance Speed Pressure Tilt_X Tilt_X  16 79769.0 aaaaa 8898 8438 NaN NaN NaN None None None  17 79784.0 aaaaa 8898 8438 15.0 0.0 0.0 None None None  18 79793.0 aaaaa 8898 8438 9.0 0.0 0.0 None None None  19 79802.0 aaaaa 8898 8438 9.0 0.0 0.0 None None None  26 84456.0 bbb 8762 9318 NaN NaN NaN 0 0 0  27 84459.0 bbb 8762 9318 3.0 0.0 0.0 4069 -1397 -1445  28 84459.0 bbb 8762 9318 0.0 0.0 0.0 4069 -1397 -1445  29 84464.0 bbb 8762 9318 5.0 0.0 0.0 3944 -1397 -1445  30 84472.0 bbb 8762 9318 8.0 0.0 0.0 3692 -1397 -1445  31 84482.0 bbb 8741 9253 10.0 0.6 0.0 3317 -1397 -1445  

Но следующий код приводит к Reindexing only valid with uniquely valued Index objects :

 aaaaa_tmp_df = pd.concat([aaaaah_Time_df,  aaaaa_input_df,  aaaaa_X_df,  aaaaa_Y_df,  aaaaa_time_df_diff,  aaaaa_xy_real_dis_df,  aaaaa_speed_df,  aaaaa_Pressure_df,  aaaaa_TiltX_df,  aaaaa_TiltY_df],axis = 1)  aaaaa_tmp_df.columns=['TimeStamp',  'Input',  'X',  'Y',  'Time',  'Distance',  'Speed',  'Pressure',  'Tilt_X',  'Tilt_X']  bbb_tmp_df = pd.concat([bbb_Time_df,  bbb_input_df,  bbb_X_df,  bbb_Y_df,  bbb_time_df_diff,  bbb_xy_real_dis_df,  bbb_speed_df,  bbb_Pressure_df,  bbb_TiltX_df,  bbb_TiltY_df],axis = 1)  bbb_tmp_df.columns=['TimeStamp',  'Input',  'X',  'Y',  'Time',  'Distance',  'Speed',  'Pressure',  'Tilt_X',  'Tilt_Y']   aaaaa = aaaaa_tmp_df[aaaaa_tmp_df['Input'] == 'aaaaa'] bbb = bbb_tmp_df[bbb_tmp_df['Input'] == 'bbb']  all_df = pd.concat([aaaaa,bbb],axis = 0, ignore_index=True)  

Ошибка msg:

 Traceback (most recent call last):  File "D:PythonDigiinfo_ParserDigiinfo_Parser.py", line 276, in   lt;modulegt; all_df = pd.concat([touch,pen,ptp],axis = 0, ignore_index=True)  File "C:UsersANDYCHENAnaconda3libsite-  packagespandascorereshapeconcat.py", line 298, in concat return op.get_result()  File "C:UsersANDYCHENAnaconda3libsite-  packagespandascorereshapeconcat.py", line 516, in get_result indexers[ax] = obj_labels.get_indexer(new_labels)  File "C:UsersANDYCHENAnaconda3libsite-  packagespandascoreindexesbase.py", line 3171, in get_indexer raise InvalidIndexError(  InvalidIndexError: Reindexing only valid with uniquely valued Index  objects  

Комментарии:

1. a concat работает для меня без проблем, можете ли вы перепроверить свой пример? Также, пожалуйста, укажите точную команду, которую вы использовали

2. Код прилагается

Ответ №1:

Здесь на самом InvalidIndexError деле имеется в виду индекс столбца.

df1 имеет повторяющиеся имена столбцов:

 ... Pressure Tilt_X Tilt_X  

pd.concat не работает с повторяющимися именами столбцов.

В этом случае похоже Tilt_X , что на самом деле должно быть второе Tilt_Y , но вам следует проверить все столбцы ваших фреймов данных, чтобы убедиться, что других дубликатов нет.

Ответ №2:

Вы хотите concat вертикально, но привыкли axis=1 . Удалите этот параметр:

 pd.concat([input_df, time_df, contactid_df, x_df, y_df, pressure_df, tiltx_df, tilty_df])  

Комментарии:

1. я хочу all_df = pd.concat([touch,pen,ptp],axis = 0, ignore_index=True) объединить ,получаю ту же ошибку

2. пожалуйста, укажите полную ошибку и минимальный воспроизводимый пример