#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. пожалуйста, укажите полную ошибку и минимальный воспроизводимый пример