如何并排合并两个数据框?

Posted

技术标签:

【中文标题】如何并排合并两个数据框?【英文标题】:How to merge two dataframes side-by-side? 【发布时间】:2014-07-16 11:50:40 【问题描述】:

有没有办法方便地并排合并两个数据框?

两个数据框都有 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:如果可能的话,我希望复制的列名可以自动解析。

谢谢!

【问题讨论】:

Pandas join/merge/concat two dataframes的可能重复 【参考方案1】:

您可以为此使用concat 函数(axis=1 是连接为列):

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

请参阅有关合并/连接的 pandas 文档:http://pandas.pydata.org/pandas-docs/stable/merging.html

【讨论】:

看看这个链接 - chris.friedline.net/2015-12-15-rutgers/lessons/python2/…。并且您可能需要在连接它们之前 reset_index() ,以防您无法并排连接它们。这个答案是正确的。但是,我只是想为即使在回答后仍可能被卡住的人添加一个注释。 @PallavBakshi 是的,我需要将 .reset_index(drop=True) 添加到我已完成选择以重新对齐行的数据框中。 将列表更改为生成器可能会更高效,这样可以避免创建大型中间对象:pd.concat((df1, df2), axis=1)【参考方案2】:

我在尝试实现以下目标时遇到了您的问题:

因此,一旦我对数据帧进行切片,我首先要确保它们的索引是相同的。在您的情况下,两个数据帧都需要从 0 到 29 进行索引。然后按索引合并两个数据帧。

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

【讨论】:

有史以来最好的解决方案【参考方案3】:

如果您想将 2 个具有共同列名的数据框组合在一起,您可以执行以下操作:

df_concat = pd.merge(df1, df2, on='common_column_name', how='outer')

【讨论】:

【参考方案4】:

当我从谷歌进来时,我发现其他答案对我来说并不合适。

我所做的是在原始 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

【讨论】:

【参考方案5】: 有办法,您可以通过管道来实现。

** 使用管道将数字数据转换为 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),
])
在此处阅读更多信息 - https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.FeatureUnion.html

【讨论】:

以上是关于如何并排合并两个数据框?的主要内容,如果未能解决你的问题,请参考以下文章

使用两个数据框绘制并排条形图

如何使用 Seaborn 并排绘制熊猫数据框的多组列

如何从 R 中的数据子集创建两个并排图? [复制]

根据日期时间索引合并两个数据框(不同大小)

android代码并排合并两个视频并使其成为一个视频(只想要一个音频)

sql并排合并表,没有共同点