Как объединить два кадра данных с разными индексами вдоль оси столбца - PullRequest
4 голосов
/ 29 января 2020

Я хочу объединить 2 кадра данных, и первый - dm.shape = (21184, 34), второй - po.shape = (21184, 6). Я хочу объединить их, тогда это будет 40 столбцов. Я пишу как

dm = dm.merge(po, left_index=True, right_index=True)

, тогда dm.shape = (4554, 40) мои строки уменьшились.

Ps po - это PolynomialFeatures числовых данных dm.

Ответы [ 3 ]

1 голос
/ 29 января 2020

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

df = dm.reset_index(drop=True).merge(po.reset_index(drop=True), 
                                     left_index=True, 
                                     right_index=True)

Решение с concat - по умолчанию внешнее соединение, но если оно одинаковое Значения индекса у обоих работают одинаково:

df = pd.concat([dm.reset_index(drop=True), po.reset_index(drop=True)], axis=1)
0 голосов
/ 29 января 2020

Вы можете использовать метод join и установить для параметра on индекс индекса объединенного фрейма данных:

df1 = pd.DataFrame({'col1': [1, 2]}, index=[1,2])
df2 = pd.DataFrame({'col2': [3, 4]}, index=[3,4])

df1.join(df2, on=df2.index)

Вывод:

   col1  col2
1     1     3
2     2     4

Присоединенный фрейм данных должен не содержат дублированных индексов.

0 голосов
/ 29 января 2020

Или используйте:

dm = pd.DataFrame([dm.values.flatten().tolist(), po.values.flatten().tolist()]).rename(index=dict(zip(range(2),[*po.columns.tolist(), *dm.columns.tolist()]))).T
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...