1
Я хотел бы объединить df_1 и df_2 для создания df_merged, но я хочу объединить столбцы, которые имеют как общие, так и созданные A_x и A_y.Объединить два похожих кадра данных, которые имеют одинаковые столбцы
index = [np.array(['foo', 'foo', 'qux', 'qux']),
np.array(['one', 'two', 'one', 'two',])]
columns = ["A", "B"]
df_1 = pd.DataFrame(np.random.randn(4, 2), index=index, columns=columns)
index = [np.array(['bar', 'bar', 'baz', 'baz',]),
np.array(['one', 'two', 'one', 'two',])]
columns = ["A", "B"]
df_2 = pd.DataFrame(np.random.randn(4, 2), index=index, columns=columns)
df_merge = pd.merge(df_1, df_2, left_index=True, right_index=True, how='outer')
print df_1
print df_2
print df_merge
df_1
A B
foo one 2.082229 1.575985
two -0.805592 0.444195
qux one 0.368874 0.253556
two 1.017632 -0.471978
df_2
A B
bar one 0.134571 0.415209
two -1.288889 -0.144284
baz one -0.117345 -0.095292
two -0.256708 -0.682542
df_merge - выходной ток
A_x B_x A_y B_y
bar one NaN NaN 0.134571 0.415209
two NaN NaN -1.288889 -0.144284
baz one NaN NaN -0.117345 -0.095292
two NaN NaN -0.256708 -0.682542
foo one 2.082229 1.575985 NaN NaN
two -0.805592 0.444195 NaN NaN
qux one 0.368874 0.253556 NaN NaN
two 1.017632 -0.471978 NaN NaN
df_merge - желательная
A B
bar one 0.134571 0.415209
two -1.288889 -0.144284
baz one -0.117345 -0.095292
two -0.256708 -0.682542
foo one 2.082229 1.575985
two -0.805592 0.444195
qux one 0.368874 0.253556
two 1.017632 -0.471978
ах Я только что понял, что мой минимальный пример был невелик. Первая иерархия индекса должна быть одинаковой для df_1 и df_2 - поэтому необходимо также слияние - и concat оставляет меня с дополнительными строками, для которых требуется очистка другой строки кода. Это нормально для меня, чтобы изменить мой вопрос? – bluprince13
До вас;) – jezrael
Я немного смущен - мое второе решение работает. Или что-то не хватает? – jezrael