Ответ 1
Для этого вы можете использовать функцию concat
(axis=1
- объединять в столбцы):
pd.concat([df1, df2], axis=1)
См. документы для панд по слиянию/объединению: http://pandas.pydata.org/pandas-docs/stable/merging.html
есть ли способ удобно объединить два кадра данных бок о бок?
оба двух кадра данных имеют 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: если возможно, я надеюсь, что имена реплицированных столбцов могут быть разрешены автоматически.
благодарю!
Для этого вы можете использовать функцию concat
(axis=1
- объединять в столбцы):
pd.concat([df1, df2], axis=1)
См. документы для панд по слиянию/объединению: http://pandas.pydata.org/pandas-docs/stable/merging.html
Я наткнулся на ваш вопрос, пока я пытался добиться чего-то вроде следующего:
Поэтому, как только я нарезал свои dataframes, я сначала обеспечил, чтобы их индекс был одинаковым. В вашем случае оба файла данных должны индексироваться от 0 до 29. Затем объединили оба блока данных по индексу.
df1.reset_index(drop=True).merge(df2.reset_index(drop=True), left_index=True, right_index=True)
** Используйте конвейер для преобразования ваших числовых данных для 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),
])