簡體   English   中英

如何逐行合並多個 csv 文件 python

[英]How to merge multi csv files line by line python

我希望代碼能夠逐行合並 output csv 文件。 它會一個接一個地寫第一行,然后一個接一個地寫第二行。

import numpy as np, pandas as pd, os, glob
path = (r'E:\csvfile')
all_files = glob.glob(path + "/*.csv")
li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=False, header=0)
    li.append(df)

frame = pd.concat(li,axis=0,names=None)
frame.to_csv (r'E:\csvfile\exportC.csv', mode = 'w', index=False)

我嘗試了具有不同參數的較短代碼。 >

import pandas as pd, glob
df = pd.concat(map(pd.read_csv, glob.glob(r'E:\csvfile/*.csv')),axis=0)
df.to_csv (r'E:\csvfile\exportC.csv',mode = 'w', index=False) 

文件1.csv

0, 10,12
0,11,12
1,15,12

文件2.csv

0, 2, 1
1,22, 1
3, 11, 1

文件3.csv

0, 4, 6
9, 14, 13
5, 6, 2

預期的 output。

0, 10,12
0, 2, 1
0, 4, 6
0,11,12
1,22, 1
9, 14, 13
1,15,12
3, 11, 1
5, 6, 2

從現在開始謝謝你。

您可以首先連接三個單獨的數據幀df1df2df3 ,然后使用sort_index pandas 方法根據索引號重新組織 dataframe :

import pandas as pd
df1=pd.read_csv(file1.csv)
df2=pd.read_csv(file2.csv)
df3=pd.read_csv(file3.csv)
df=pd.concat([df1, df2, df3], axis=0).sort_index() 

這將返回:

   0   1   2
0  0  10  12
0  0   2   1
0  0   4   6
1  0  11  12
1  1  22   1
1  9  14  13
2  1  15  12
2  3  11   1
2  5   6   2

您可以為每個 CSV 制作一個 dataframe,並編寫一個循環和附加行的 function。 如果 CSV 很大,您可以分塊讀取它們。

while i < df_length:
  df = df.append(df1.iloc[[i],:]).append(df2.iloc[i,:]).append(df3.iloc[i,:])
  i += 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM