完全に自分用のメモ書き。
最近使っている測定機器から、複数のデータをまとめてエクスポートすると、一つのファイルに縦方向に連結されて出力される。この仕様ってよくあるんですかね?分割しないと色々不便なので、それを分割するコードを書いてみた。
対象のデータ
コード
import pandas as pd #読み込むファイル名 csv_file = "./Measurement.csv" df = pd.read_csv(csv_file, header=None) #分割の繰り返し用 raw_number = 27 #分割後のDataFrame保存用 split_df = [] #分割 for i in range(0, len(df), raw_number): split_df.append(df.iloc[i:i+raw_number,0:2].reset_index(drop=True)) #csv出力 for temp_df in split_df: filename = temp_df[1][0] + ".csv" csv_writer = temp_df.to_csv(filename,header=False, index = False)
繰り返し行数が一定でない場合
import pandas as pd #読み込むファイル名 csv_file = "./Measurement2.csv" df = pd.read_csv(csv_file, header=None) #分割の繰り返し用 raw_number = df.loc[df[0]=='Name'].index #分割後のDataFrame保存用 split_df = [] #分割 initial = 0 #ファイルごとの最初の行を入力する為の変数 end = len(df) #ファイルの最後 for i in raw_number[1:]: split_df.append(df.iloc[initial : initial + i, 0:2].reset_index(drop=True)) initial = i #最後のデータはfor文の外で処理 split_df.append(df.iloc[initial : end, 0:2].reset_index(drop=True)) #csv出力 for temp_df in split_df: filename = temp_df[1][0] + ".csv" csv_writer = temp_df.to_csv(filename,header=False, index = False)