[英]How to merge two dataframes side-by-side?
有没有办法方便地并排合并两个数据框?
两个数据框都有 30 行,它们有不同的列数,例如,df1 有 20 列,df2 有 40 列。
如何轻松获得 30 行 60 列的新数据框?
df3 = pd.someSpecialMergeFunct(df1, df2)
或者可能有一些特殊的参数附加
df3 = pd.append(df1, df2, left_index=False, right_index=false, how='left')
ps:如果可能的话,我希望复制的列名可以自动解析。
谢谢!
您可以为此使用concat
函数( axis=1
是连接为列):
pd.concat([df1, df2], axis=1)
请参阅有关合并/连接的 pandas 文档:http: //pandas.pydata.org/pandas-docs/stable/merging.html
如果要将 2 个数据框与公共列名组合在一起,可以执行以下操作:
df_concat = pd.merge(df1, df2, on='common_column_name', how='outer')
当我从谷歌进来时,我发现其他答案并没有为我解决问题。
我所做的是将新列设置在原始 df 中。
# list(df2.columns) gives you the column names of df2
# you then use these as the column names for df
df[ list(df2.columns) ] = df2
** 使用管道将您的数字数据转换为 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)),
])
** 然后使用 Feature union 将这些转换加在一起
preprocess_pipeline = FeatureUnion(transformer_list=[
("num_pipeline", num_pipeline),
("cat_pipeline", cat_pipeline),
])
如果df1
和df2
具有不同的索引,此解决方案也适用:
df1.loc[:, df2.columns] = df2.to_numpy()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.