【问题标题】:I have two csv files that i need to merge based on the intersection of the two files i want to drop the columns that weren't repeated我有两个 csv 文件,我需要根据两个文件的交集来合并我想删除未重复的列
【发布时间】:2020-06-09 04:45:49
【问题描述】:

例如,如果文件 1 如下所示:

 id  col1  col2  col3
 --------------------
  1  aa    bb     cc
  2  dd    ff     gg

文件 2 看起来像

 id  col1  col2  col3  col4
 ---------------------------
  3   qq    ww    ee    tt

我希望输出文件看起来像

 id   col1   col2   col3
 -----------------------
  1   aa     bb     cc
  2   dd     ff     gg
  3   qq     ww     ee 

意思是我只想根据交集合并文件,我想丢弃两个文件中没有重复的列

我尝试了以下尝试

df1= pd.read_csv("lastOne.csv")
df2=pd.read_csv("Normal.csv")
dfAll=pd.concat([df1, df2], axis=1, join='inner')

我还尝试了 df1.combine_first(df2) 等许多其他方法,但都未能满足我的需要

【问题讨论】:

  • 你有多少这样的文件?您可以尝试 reindexing 使用 df1 列,例如 pd.concat((df1,df2),sort=False).reindex(columns=df1.columns)pd.concat((df1,df2),sort=False).loc[:,df1.columns]
  • 非常感谢这解决了我的问题!

标签: python pandas csv dataframe merge


【解决方案1】:

你很接近,但你选择了错误的轴。

axis=0 适用于您想要添加更多行、具有相似列的情况

axis=1当您想要添加更多列并且您有相似的行时

正确答案是:

pd.concat([df1, df2], join='inner', axis=0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    相关资源
    最近更新 更多