#python #pandas
#python #pandas
Вопрос:
Я новичок в Python. У меня есть 2 фрейма данных, каждый с одним столбцом. Я хочу объединить их вместе и сохранить значения на основе их соответствующих позиций в каждой из таблиц.
Мой код выглядит примерно так:
huh = pd.DataFrame(columns=['result'], data=['a','b','c','d'])
huh2 = pd.DataFrame(columns=['result2'], data=['aa','bb','cc','dd'])
huh2 = huh2.sort_values('result2', ascending=False)
tmp = pd.concat([huh,huh2], ignore_index=True, axis=1)
tmp
Из документации это выглядит как ignore_index
флаг и axis=1
должно быть достаточным для достижения этого, но результаты явно расходятся.
Текущий вывод:
0 1
0 a aa
1 b bb
2 c cc
3 d dd
Желаемый результат:
result result2
0 a dd
1 b cc
2 c bb
3 d aa
Ответ №1:
Если вы объединяете фреймы данных по горизонтали, то имена столбцов игнорируются. При объединении по вертикали индексы игнорируются. Вы можете игнорировать только один или другой, но не оба.
В вашем случае я бы рекомендовал установить индекс «huh2» таким же, как у «huh».
pd.concat([huh, huh2.set_index(huh.index)], axis=1)
result result2
0 a dd
1 b cc
2 c bb
3 d aa
Если вы не имеете дело с пользовательскими индексами, reset_index
будет достаточно.
pd.concat([huh, huh2.reset_index(drop=True)], axis=1)
result result2
0 a dd
1 b cc
2 c bb
3 d aa