2017-12-09 41 views
0

C:\ 1の11というフォルダにcsvのリストがあります。すべてのデータの列数は同じです。それはcsvファイルから読み込み、それぞれの新しいデータとの間に空の列を持つように私はデータフレームの中にそのフォルダ内の各ファイルを読み込むにはどうすればよい複数のファイルを読み込んでデータフレームに読み込む方法

A.csv

aa zz 1  AA 
aab qq 3  FF 
ca qq 5  QQ 

B.csv

aa GG 09 VV 
aab HH 03 WW 
ca CC 0  UU 

それのように見えるように:

A  B  C  D  E F  G  H  I 
aa zz 1  AA   aa GG 09 VV 
aab qq 3  FF   aab HH 03 WW 
ca qq 5  QQ   ca CC 0  UU 

すなわち:

dfs = {i: pd.read_csv('C:\\1\\{}.csv'.format(i)) for i in ['a', 'b']} 
print (dfs['a']) 

または:

import os 
import pandas as pd 
filelist = os.listdir(targetdir) 
df_list = [pd.read_table(file) for file in filelist] 
big_df = pd.concat(df_list) 


    FileNotFoundError: File b'b.csv' does not exist 

答えて

0

あなたはこのように、各ファイルの読み込みにスペーサーデータフレームを追加することができます。

import os 
import pandas as pd 

# with directory name 1, located at ~/1: 
dir_name = "1" 
path = "~" 
dfs = [] 

# with files A.csv, B.csv in ~/1 (e.g. ~/1/A.csv): 
for fname in os.listdir(f"{path}/{dir_name}"): 

    df = pd.read_csv(f"{path}/{dir_name}/{fname}", header=None) 
    spacer = pd.DataFrame([" "]*len(df)) 
    dfs.append(df) 
    dfs.append(spacer) 
master = pd.concat(dfs, axis=1) 

master 
    0 1 2  3 0 0 1 2 3 0 
0 aa zz 1 AA  aa GG 9 VV 
1 aab qq 3 FF  aab HH 3 WW 
2 ca qq 5 QQ  ca CC 0 UU 

あなたが本当にあなたの記事、使用中の指定されたアルファベットの列名(ABC)したい場合:

import string 
colnames = string.ascii_uppercase 
master.columns = [x for x in colnames[:len(master.columns)]] 

注:ディレクトリ・パスは、Macの構文を使用しますが、に適応するのは簡単でなければなりませんWindows。

+0

私はpandas.errors.ParserError:データをトークン化する際にエラーが発生しているようです。 Cエラー:4行目の2つのフィールドが予想されます。2 –

+1

CSVにセパレータが正しく指定されていない場合や、実際に列を区切る区切り文字以外のファイルにセパレータが追加されている場合に発生します。たとえば、元の投稿にA.csvを表示し、各フィールドを区切る複数の空白文字を使用する方法は機能しません。 (私はカンマ区切りを意味するCSVであると言っていたので、プレゼンテーションのためのものであると仮定していました)セパレータを確認し、 'read_csv'の' sep'引数が正しいことを確認してください。 –

関連する問題