2016-10-07 5 views
0

私は、従属変数と独立変数を測定しています(デバイス測定からの電流と電圧を考えてみましょう)。測定設定では、正の測定値と負の測定値に対して別ファイルが表示されます。各ファイルはExcelファイルで、電圧と電流の2つの列があります。私は彼らの名前を何でもいいので、私はそれらをdevice1_pos、device1_neg、device2_pos、device2_neg、device3_pos、device3_negというように名付けます。さらに、あるデバイスに対して繰り返し測定を行うことができるので、device1_pos_meas2、device1_neg_meas2という名前を付けます。すべてのデータを収集した後、正と負の測定値を1つのファイルにマージして、特定のデバイスに使用したいと考えています。だからdevice1(device1_posとdevice1_negを組み合わせるが、device1_meas2のような別のファイルで同じデバイスの2番目の測定値を組み合わせる)のようなファイルを持っていきたいと思っています。部分的に一致するファイル名にファイルベースをマージする

このプロセスをPythonまたはシェルスクリプトで自動化する方法はありますか?よりスマートな方法があれば、プロセスを簡単にするためにファイルに名前を付けることもできます。これも参考になります。

私の初期の質問にもっと情報を追加する - 私は次のように2つのファイルをマージしても問題ないと思います。私は2つのファイルを連結していますが、ヘッダーと行のインデックスを必要としないので、行ごとにcsvファイルに読み込みます(最も効率的な方法ではなく、私が把握できる方法です)。

import os 
import pandas as pd 
from xlrd import open_workbook 
import xlwt 

os.chdir( 'C:\ Users \ユーザーfg7xmxプロジェクト\ドキュメント\ \ ESD \テストベンチ\測定\ 100616')

path=os.getcwd() 
file_pos=raw_input("Enter pos data file:") 
file_neg=raw_input("Enter neg data file:") 
file_allData=raw_input("Enter all data file name:") 
file_csv=raw_input("Enter csv file name:") 
file1=pd.read_excel(file_pos) 
file2=pd.read_excel(file_neg) 
file3=pd.concat([file1,file2],axis=0) 
file3.to_excel(file_allData) 
wb=open_workbook(file_allData) 
for sheet in wb.sheets(): 
    workbook=xlwt.Workbook() 
    newSheet = workbook.add_sheet('TLP_IV') 
    for row in range(sheet.nrows): 
     if row==0: continue 
     for col in range(sheet.ncols): 
      if col==0: continue 
      newSheet.write(row-1,col-1,sheet.cell_value(row,col)) 
workbook.save(file_csv) 

しかし、あなたが見るように、私は手動で各に入っています多数のファイルに対して合理的でないファイル名。私の実際のファイル名は

Mod5_pin10_pin8_pos_dev1_10-06-16_10'01'21_AM.xlsように見える

私は与えられたパターンに一致することができますが、ここで私はグループに同じMOD番号を持って一緒にファイルを必要とする正規表現を使用して知っています同じピン番号、同じ測定ドメイン(posまたはneg)、同じdev番号、同じ日付スタンプ、およびタイムスタンプを無視します。私はそのようなグループ分けのためにどんなコマンドを使うことができるのかよくわかりません。ここで

+0

以下のように指定されたキーの値を読むことができます同じ「グループ」に属しているファイル(たとえば、デバイスの場合)を特定できれば、何でもゲームです。あなたのスクリプトにその大会を再適用するだけで、あなたはうまくいくでしょう。マージコードは、ファイルの形式によって異なります。エクセルと言っている間は、CSVにすることもできます。 Python/shell:本当に依存します。そのことを示すコードを表示してください。あなたが立ち往生した場合、私たちはさらに手助けします。 – sal

+0

@sal私は今のコードを追加しました。私は一緒にファイルをグループ化するためにいくつかの助けが必要です。ありがとう。 – beeprogrammer

+0

素晴らしいです、それは素晴らしいスタートです。この最初のサンプルを見てください。https://eval.in/657286 – sal

答えて

0

が、私はこの

groups= defaultdict(list) 
group_sweep=defaultdict(list) 
for filename in os.listdir('C:\\Users\\TLP_IV'): 
    basename, extension = os.path.splitext(filename) 
    mod, name, pin1, pin2, sweep, dev, meas, date, time, hour=basename.split('_') 
    groups[mod, name, pin1, pin2, dev, meas, date].append(filename) 
    group_sweep[sweep].append(filename) 

をやっていった方法です私は、セパレータとして「_」と同じ命名規則で各ファイルを命名することを確認しました。私は様々な属性のリストと辞書を作成することができたら、私は、キーによってグループとあなたはそれがとても一貫している限り、あなたのファイルに名前を付けるために使用するものは何でも大会

for keys,values in group_sweep.items(): 
    i="" 
    for key in keys: 
     if key=='n': 
      for value in values: 
       print value 
関連する問題