スポンサーリンク
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
import os import pandas as pd import re directory = '/path/to/your/directory' # フォルダのパスを指定 output_directory = '/path/to/your/output_directory' # 出力フォルダのパスを指定 # フォルダ内のCSVファイルを名前順にソート csv_files = sorted([f for f in os.listdir(directory) if f.endswith('.csv')]) # ファイル数を取得 total_files = len(csv_files) # 最新の出力ファイルを探す output_files = sorted([f for f in os.listdir(output_directory) if f.endswith('.xlsx')]) last_file = output_files[-1] if output_files else None # 最新の出力ファイルの名前から開始インデックスを取得 start_index = int(re.match(r'(\d+)_output.xlsx', last_file).group(1)) if last_file else 0 # 2000台ごとに処理を行う for i in range(start_index, total_files, 2000): start_index = i end_index = min(i + 2000, total_files) # ファイル数が2000未満の場合の対応 output_file_name = f'{start_index + 1}_output.xlsx' # 出力ファイル名を作成 # 出力用のデータフレームを作成 output_df = pd.DataFrame(columns=['File Name', 'B Column Total']) # ファイルを順番に処理 for j in range(start_index, end_index): file_name = csv_files[j] file_path = os.path.join(directory, file_name) df = pd.read_csv(file_path) b_column_total = df['B'].sum() output_df = output_df.append({'File Name': file_name, 'B Column Total': b_column_total}, ignore_index=True) # 結果をExcelファイルとして出力 output_file_path = os.path.join(output_directory, output_file_name) output_df.to_excel(output_file_path, index=False) print(f'Processed files {start_index + 1} to {end_index}. Output saved to {output_file_name}') @echo off REM Pythonスクリプトの名前(拡張子は含まない) set SCRIPT_NAME=your_script REM Pythonスクリプトが実行中かどうかを確認 tasklist | findstr /i "%SCRIPT_NAME%.py" IF %ERRORLEVEL% NEQ 0 ( echo "スクリプトが実行されていません。再実行します。" python %SCRIPT_NAME%.py ) ELSE ( echo "スクリプトはすでに実行中です。" ) from pandas.tseries.offsets import Minute # ...(省略)... # 'value'以外の列名を取得 other_columns = [col for col in df.columns if col != 'value'] # データフレームの最初のタイムスタンプと最後のタイムスタンプを取得 start_time = df.index.min().floor('H') end_time = df.index.max().ceil('H') # 該当月の各日時について for time in pd.date_range(start=start_time, end=end_time, freq='H'): # データが存在しない場合 if time not in df.index: # 新たなデータポイントを2つ作成(5分後と35分後に設定) new_data_dict = { 'timestamp': [time + Minute(5), time + Minute(35)], 'value': [0, 0] # ここに任意の値を設定 } # 他の列全てを0で埋める for col in other_columns: new_data_dict[col] = [0, 0] new_data = pd.DataFrame(new_data_dict) # 'timestamp'列を日時として解釈 new_data['timestamp'] = pd.to_datetime(new_data['timestamp']) # 日時をインデックスに設定 new_data = new_data.set_index('timestamp') # 元のDataFrameに新たなデータを追加 df = pd.concat([df, new_data]) # DataFrameを日時でソート df = df.sort_index() |
ABOUT ME
スポンサーリンク
スポンサーリンク