Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中合并多个CSV而不使用coulmn名称作为头?_Python_Python 3.x_Pandas - Fatal编程技术网

如何在python中合并多个CSV而不使用coulmn名称作为头?

如何在python中合并多个CSV而不使用coulmn名称作为头?,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有7个CSV,我想根据id合并它们,下面是示例: CSV1: CSV2: CSV3: 我需要的合并CSV: 101, A, B, C, D, E, F, J, K, L 102, A, B, C, D, E, F, J, K, L CSV没有列名或标题 我试着使用pandas merge和concat,但这似乎不起作用,因为它会使字段成倍增加。请帮助。让我们假设所有文件都在目录中 import pathlib, pandas as pd path = pathlib.Path("

我有7个CSV,我想根据id合并它们,下面是示例:

CSV1:

CSV2:

CSV3:

我需要的合并CSV:

101, A, B, C, D, E, F, J, K, L
102, A, B, C, D, E, F, J, K, L
CSV没有列名或标题


我试着使用pandas merge和concat,但这似乎不起作用,因为它会使字段成倍增加。请帮助。

让我们假设所有文件都在目录中

import pathlib, pandas as pd

path = pathlib.Path("path to directory")

conslidated_df = pd.concat([pd.read_csv(file_,header=None).set_index(0) for file_ in path.iterdir()],axis=1)

下面是我们如何一步一步地做到这一点

假设:所有csv文件都在一个文件夹中

第一步。获取所有csv文件的路径
将熊猫作为pd导入
导入操作系统
csv_folder='csvs/'
df_list=list(过滤器(lambda x:x.lower().endswith('.csv')、os.listdir(csv_文件夹)))
示例输出如下所示:
['1.csv', '2.csv', '3.csv']
步骤2:读取所有csv并连接它们
combined_df=pd.DataFrame()
对于df_列表中的df_名称:
df=pd.read\u csv(os.path.join(csv\u文件夹,df\u名称),header=None,index\u col=0)
组合式测向=pd.concat([组合式测向,测向],轴=1)
最终df看起来像
在pd.concat()中使用'axis=1'参数来创建宽表:
pd.concat([df1,df2,df3],axis=1)
感谢您的详细响应,但是当我实现这个:raise ValueError(f“传递值的形状是{传递},索引暗示{隐含}”)ValueError:传递值的形状是(52205,6),索引暗示(52175,6)我想这是因为指数问题。如果存在重复索引,则可能发生此错误。你能在循环中添加一个
print(df_name)
,并共享创建错误的CSV。读取第二个文件时抛出错误,pfb我拥有和需要的数据:-file1-101,Y,1999-07-01 00:00:00.0,file2-101,00000004,2004-01-01 00:00:00.0,final_文件-101,Y,1999-07-01 00:00.0,00000004,2004-01-01 00:00:00.0,当我尝试运行它并给出与final_文件相同的结果时,它不会抛出任何错误。您可以使用
pd.read_csv('filepath')
分别读取文件1和文件2,并确保csv格式没有错误吗?虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您文章的质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
101, A, B, C, D, E, F, J, K, L
102, A, B, C, D, E, F, J, K, L
import pathlib, pandas as pd

path = pathlib.Path("path to directory")

conslidated_df = pd.concat([pd.read_csv(file_,header=None).set_index(0) for file_ in path.iterdir()],axis=1)
for idx, df in enumerate(dataframes):
   if idx == 0:
       merged_df = dataframe[1] #df2
   merge_total = pd.merge(df, merged_df, how="inner", on="id")
['1.csv', '2.csv', '3.csv']
      1   2   3   4   1   2   1   2   3
0                                      
101   A   B   C   D   E   F   J   K   L
102   A   B   C   D   E   F   J   K   L