【问题标题】:How to concatenate two csv files in python如何在python中连接两个csv文件
【发布时间】:2021-04-17 03:37:08
【问题描述】:

我有一个代码,我尝试使用 pd.concat() 合并几个 csv 文件, 我遇到的问题是连接文件的最后一列 file1.csv 和 file2.csv 的第一列合并在一个单元格中(对于 file.csv 和 file3.csv 也是如此),如下图所示。我将不胜感激这方面的任何帮助。

file1 = 'file1.csv'
file2 = 'file2.csv'
file3 = 'file3.csv'
df1 = pd.read_csv( file1, sep="\n" ,na_values='NA')
df2 = pd.read_csv( file2, sep="\n" ,na_values='NA')
df3 = pd.read_csv( file3, sep="\n" ,na_values='NA')
BigDf = pd.concat([df1, df2,df3], axis=1)
BigDf.to_csv('final.csv', sep="\t", index = False)

例如。 file1.csv 是


       A      B      C      
0  False  False  False  
1   True   True  False   
2  False  False  False   
3  False  False  False  

file2.csv 是

      D     E      F     
0  False  False  False  
1   True   True  False   
2  False  False  False   
3  False  False  False  
 
   

合并后的文件应该是


       A      B      C      D     E     F     
0  False  False  False    False  False  False 
1  True   True  False     True   True  False
2  False  False  False    False  False  False 
3  False  False  False    False  False  False 

其实是

       A      B      CD     E     F     
0  False  False  FalseFalse  False  False 
1  True   True   FalseTrue   True  False
2  False  False  FalseFalse  False  False 
3  False  False  FalseFalse  False  False 

【问题讨论】:

  • 嗯。您想要的结构似乎不是最好由 Concat 获得。 pd.merge() 怎么样?
  • 您的预期结果是什么?
  • @SreeramTP 预期的结果应该是合并的文件,并且每列应该是分开的。像上面显示的第三个插图,但由于某种原因,我一直在同一列中获得 C 和 D 列表,如第四个插图所示
  • 你能看看我的答案是不是你的预期结果
  • @SreeramTP 谢谢。但是有没有一种方法我不必编写列的标题,因为我正在处理的实际文件对于每个 csv 有 10 列,并且最后指定列名可能很乏味。我的意思是 df_new_loaded.columns Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')

标签: python concatenation


【解决方案1】:

concat 按我的预期工作,请参阅下面的代码,

import pandas as pd

df1 = pd.read_clipboard()
df1
       A      B      C
0  False  False  False
1   True   True  False
2  False  False  False
3  False  False  False

df2 = pd.read_clipboard()
df2
       D      E      F
0  False  False  False
1   True   True  False
2  False  False  False
3  False  False  False

pd.concat([df1, df2], axis=1)
       A      B      C      D      E      F
0  False  False  False  False  False  False
1   True   True  False   True   True  False
2  False  False  False  False  False  False
3  False  False  False  False  False  False

df_new = pd.concat([df1, df2], axis=1)
df_new
       A      B      C      D      E      F
0  False  False  False  False  False  False
1   True   True  False   True   True  False
2  False  False  False  False  False  False
3  False  False  False  False  False  False

df_new.to_csv("test.csv", sep='\t', index=False)

df_new_loaded = pd.read_csv("test.csv", sep='\t')
df_new_loaded
       A      B      C      D      E      F
0  False  False  False  False  False  False
1   True   True  False   True   True  False
2  False  False  False  False  False  False
3  False  False  False  False  False  False

df_new_loaded.columns
Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')

df_new_loaded
       A      B      C      D      E      F
0  False  False  False  False  False  False
1   True   True  False   True   True  False
2  False  False  False  False  False  False
3  False  False  False  False  False  False

【讨论】:

    【解决方案2】:

    你可以试试

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

    但它可能会给你同样的结果

    【讨论】:

      猜你喜欢
      • 2020-11-03
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 2023-03-03
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多