2017-06-27 3 views
1

ディレクトリ内のxlsファイルから複数の列セットを連結または追加する単純なスクリプトを作成しようとしています。各xlsファイルの形式は次のとおりです。Pythonデータフレームを水平方向に追加する

Index Exp. m/z Intensity 
1  1000.11 1000 
2  2000.14 2000 
3  3000.15 3000 

各ファイルのインデックスはさまざまです。私のコードは以下の通りです:

import pandas as pd 
import os 
import tkinter.filedialog 

full_path = tkinter.filedialog.askdirectory(initialdir='.') 
os.chdir(full_path) 

data = {} 
df = pd.DataFrame() 

for files in os.listdir(full_path): 
    if os.path.isfile(os.path.join(full_path, files)): 
     df = pd.read_excel(files, 'Sheet1')[['Exp. m/z', 'Intensity']] 
     data = df.concat(df, axis=1) 

data.to_excel('test.xls', index=False) 

これは、attributerror:DataFrameオブジェクトには属性の連結がありません。私はまたのように追加を使用してみました:

data = df.append(df, axis=1) 

私は、appendには軸キーワード引数がないことを知っています。 df.append(df)は機能しますが、列を一番下に置きます。私は何かが欲しい:

Exp. m/z Intensity  Exp. m/z Intensity 
1000.11 1000   1001.43 1000 
2000.14 2000   1011.45 2000 
3000.15 3000 

など。したがって、各ファイルから取得する列セットは、前の列セットの右側に、列スペースを挟んで配置する必要があります。

+1

だけのタイプミス - ではない 'df.concat(DF、軸= 1)' 'が、pd.concat(DF、軸= 1) ' – jezrael

答えて

1

私はあなたがリストアップし、その後pd.concatするappendDataFramesが必要だと思う:

dfs = [] 
for files in os.listdir(full_path): 
    if os.path.isfile(os.path.join(full_path, files)): 
     df = pd.read_excel(files, 'Sheet1')[['Exp. m/z', 'Intensity']] 
     #for add empty column 
     df['empty'] = np.nan 
     dfs.append(df) 
data = pd.concat(dfs, axis=1) 
+0

ありがとう!私は追加/連結してパンダに慣れていたと思ったが、このようにすることは考えなかった。 –

+0

はい、良い解決策です。なぜなら、 'concat'は一度しかないからです。 – jezrael

+0

簡単な質問:連結時にファイル間に空の列を追加する方法はありますか? –

関連する問題