スポンサーリンク
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 |
import pandas as pd # 'input.csv' からデータを読み込む input_df = pd.read_csv('C://tool//input.csv') # 条件Aまたは条件Bに基づいて異なる計算を適用する関数を定義 def apply_conditions(row): # ここで計算結果を格納する変数を初期化 calculated_value = None if row['条件'] == 'A': # 条件Aに対する計算 step1 = row['step1'] step2 = row['step2'] step3 = row['step3'] value = row['value'] if value <= 120: calculated_value = value * step1 elif value <= 280: calculated_value = (120 * step1) + ((value - 120) * step2) else: calculated_value = (120 * step1) + ((280 - 120) * step2) + ((value - 280) * step3) # 他の条件の場合(条件Bなど)の計算ロジックも同様に追加する elif row['条件'] == 'B': # 条件Bに対する計算 time = row['時間列'] step5 = row['step5'] step6 = row['step6'] value = row['value'] if 8 <= time <= 20: return value * step5 else: return value * step6 return calculated_value # 計算結果を返す # 元のinput_dfの列名を取得 original_columns = input_df.columns.tolist() # 拡張したデータを格納するための空のDataFrameを作成 extended_df = pd.DataFrame() for index, row in input_df.iterrows(): tochu_filepath = f"C:\\bbb\\{row['シリアル']}tochumonth.csv" try: # tochuファイルからmonthとvalueの列を読み込む tochu_df = pd.read_csv(tochu_filepath) # tochu_dfにinput_dfからの情報を追加する for col in original_columns: tochu_df[col] = row[col] # extended_dfにtochu_dfを結合する extended_df = pd.concat([extended_df, tochu_df], ignore_index=True) except FileNotFoundError: print(f"File {tochu_filepath} not found.") continue # 新しいDataFrameに対して計算を適用して計算結果を得る extended_df['calculated_values'] = extended_df.apply(apply_conditions, axis=1) # 'calculated_values' を最後の列から'month'と'value'の前に移動する cols = original_columns + ['month', 'value', 'calculated_values'] # 新しい列の順序を指定 extended_df = extended_df[cols] # 列の順序を変更 # 結果を出力 print(extended_df.head()) |
あああ
ABOUT ME
スポンサーリンク
スポンサーリンク