pandas 如何并排合并两个 Dataframe ?

628mspwn  于 2023-02-02  发布在  其他
关注(0)|答案(6)|浏览(186)

有没有一种方法可以方便地将两个 Dataframe 并排合并?
两个 Dataframe 都具有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:如果可能的话,我希望复制的列名可以自动解析。
谢谢!

3xiyfsfu

3xiyfsfu1#

您可以使用concat函数来完成此操作(axis=1将连接为列):

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

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

km0tfn4u

km0tfn4u2#

我遇到你的问题,而我正试图实现这样的东西:

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

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

eanckbw93#

如果要合并具有公用列名的2个数据框,可以执行以下操作:

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

swvgeqrz4#

我发现其他的答案并不适合我,当我从谷歌进来。
我所做的是在原始df中设置新列。

# list(df2) gives you the column names of df2
# you then use these as the column names for df

df[list(df2)] = df2
nqwrtyyt

nqwrtyyt5#

  • 有办法,你可以通过管道来做。
    **使用管道转换您的数字数据,例如
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),
])
ddrv8njm

ddrv8njm6#

如果df1df2具有不同的索引,则此解决方案也有效:

df1.loc[:, df2.columns] = df2.to_numpy()

相关问题