【python】縦方向に連結されたcsvファイルを分割したい

完全に自分用のメモ書き。

最近使っている測定機器から、複数のデータをまとめてエクスポートすると、一つのファイルに縦方向に連結されて出力される。この仕様ってよくあるんですかね?分割しないと色々不便なので、それを分割するコードを書いてみた。

 

対象のデータ

Measurement.csv - Google ドライブ

 

コード

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)