【问题标题】:How to append/concat 2 Pandas Dataframe with different columns如何使用不同的列附加/连接 2 个 Pandas 数据框
【发布时间】:2021-03-30 09:31:21
【问题描述】:

如何根据常用列值进行拼接/追加?

我正在从一些文件创建一些 dfs,我想编译它们。 列并不总是匹配,但总会有一些常见的列(我只知道保证匹配的几列,但列很多,我想尽可能多地保留信息)

df1:

Name Status
John 1
Jane 2

df2:

Extra1 Extra2 Name Status
a b Bob 2
c d Nancy 2

期望的输出:

要么这个(顺序无关):

Extra1 Extra2 Name Status
a b Bob 2
c d Nancy 2
NULL NULL John 1
NULL NULL Jane 2

或者这个(顺序无关):

Name Status
John 1
Jane 2
Bob 2
Nancy 2

我已经尝试了这些,但没有得到我想要的结果:

df = pd.concat([df2, df], axis=0, ignore_index=True)
df = df.set_index('Name').combine_first(df2.set_index('Name')).reset_index()  

谢谢

不知道为什么表格没有被格式化,它在预览中显示得很好

【问题讨论】:

    标签: pandas dataframe python-3.7


    【解决方案1】:
    import pandas as pd
    
    df1 = pd.DataFrame({'Name':['John', 'Jane'],'Status':[1,2]})
    df2 = pd.DataFrame({'Extra1':['a','b'],'Extra2':['c','d'],'Name':['bob', 'nancy'],'Status':[2,2]})
    
    df = pd.concat([df1,df2], axis=0, ignore_index=True)
    

    给我

    Name Status Extra1 Extra2
    John 1 NaN NaN
    Jane 2 NaN NaN
    bob 2 a c
    nancy 2 b d

    在我看来你想要的输出。

    并且您的表格格式不正确,因为您需要在文本和表格之间使用空换行符。

    【讨论】:

    • 谢谢,修复了表格格式。 df = pd.concat([df1,df2], axis=0, ignore_index=True) 重试这个,假设它很重要,我在 [] 中的 dfs 顺序错误
    • 嗯 idk 为什么,但是 pd.concat 没有得到我预期的结果:/
    猜你喜欢
    • 2019-03-07
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    相关资源
    最近更新 更多