Как объединить два кадра данных рядом?

есть ли способ удобно объединить два кадра данных бок о бок?

оба двух кадра данных имеют 30 строк, у них разное количество столбцов, например, df1 имеет 20 столбцов, а df2 - 40 столбцов.

как я могу легко получить новый кадр данных из 30 строк и 60 столбцов?

df3 = pd.someSpecialMergeFunct(df1, df2)

или, может быть, есть какой-то специальный параметр в append

df3 = pd.append(df1, df2, left_index=False, right_index=false, how='left')

ps: если возможно, я надеюсь, что имена реплицированных столбцов могут быть разрешены автоматически.

благодарю!

Ответы

Ответ 1

Для этого вы можете использовать функцию concat (axis=1 - объединять в столбцы):

pd.concat([df1, df2], axis=1)

См. документы для панд по слиянию/объединению: http://pandas.pydata.org/pandas-docs/stable/merging.html

Ответ 2

Я наткнулся на ваш вопрос, пока я пытался добиться чего-то вроде следующего:

Merge dataframe sideways

Поэтому, как только я нарезал свои dataframes, я сначала обеспечил, чтобы их индекс был одинаковым. В вашем случае оба файла данных должны индексироваться от 0 до 29. Затем объединили оба блока данных по индексу.

df1.reset_index(drop=True).merge(df2.reset_index(drop=True), left_index=True, right_index=True)

Ответ 3

  • Есть способ, вы можете сделать это через конвейер.

** Используйте конвейер для преобразования ваших числовых данных для ex-

Num_pipeline = Pipeline
([("select_numeric", DataFrameSelector([columns with numerical value])),
("imputer", SimpleImputer(strategy="median")),
])

** И для категориальных данных

cat_pipeline = Pipeline([
    ("select_cat", DataFrameSelector([columns with categorical data])),
    ("cat_encoder", OneHotEncoder(sparse=False)),
])

** Затем используйте объединение объектов, чтобы объединить эти преобразования

preprocess_pipeline = FeatureUnion(transformer_list=[
    ("num_pipeline", num_pipeline),
    ("cat_pipeline", cat_pipeline),
])