実現したいこと
IndentationError: unexpected indent のエラーが生じてしまう原因がわかりません
前提
python初心者です.
あるフォルダ内のcsvの連番ファイルすべてに同一の処理を行い(一列の縦ベクトルで出力),一つのcsvファイルにA列から一列ずつ並べたいです.
csv内の数値を一列の縦ベクトルに変換する際にforを使用し,それをすべてのファイルで行うためにforを使用しますが,その際に以下の様なインデントエラーが発生します.
一つのファイルに対しての処理は正常に動作しましたが,forですべてのファイルに対して同じ処理を行おうとするとエラーが発生します.二つ目のfor以降でエラーが起きてしまいます.
発生している問題・エラーメッセージ
for unique_value in dft[0].unique(): ~ ~ result_df[f'Column_{i}'] = vector まですべてに IndentationError: unexpected indent が発生してしまいます. 以下は一つのファイルに対して行った処理です.正常に動作しました. import pandas as pd import numpy as np # Excelファイルを読み込みます csv_file_path = 'F:\\PIVlabaveisou_1.csv' df = pd.read_csv(csv_file_path, header=None, usecols=[0, 1, 2, 3], encoding="SHIFT-JIS") dft = df.fillna('0') # Create an empty dictionary to store the matrix data for the 2nd and 3rd columns matrix_data_2nd_col = {} matrix_data_3rd_col = {} # Iterate through unique values in the first column for unique_value in dft[0].unique(): group = dft[dft[0] == unique_value] # Get values from the 2nd and 3rd columns (0-based index) values_2nd_col = group[2].values values_3rd_col = group[3].values matrix_data_2nd_col[unique_value] = values_2nd_col matrix_data_3rd_col[unique_value] = values_3rd_col # Create DataFrames from the dictionaries matrix_2nd_col = pd.DataFrame.from_dict(matrix_data_2nd_col, orient='index') matrix_3rd_col = pd.DataFrame.from_dict(matrix_data_3rd_col, orient='index') # Concatenate matrix_3rd_col below matrix_2nd_col combined_matrix = pd.concat([matrix_2nd_col, matrix_3rd_col], axis=0) # DataFrameをNumPy配列に変換してから縦ベクトルに変換 vector = combined_matrix.stack() print(vector) # Save the vector as a CSV file vector_df = pd.DataFrame(vector, columns=["CombinedData"]) vector_df.to_csv('F:\\piv\\vector1.csv', index=False, header=False)
該当のソースコード
python
1import pandas as pd 2import os 3 4# フォルダのパス 5folder_path = 'F:\\piv' 6 7# 結果を格納する空のDataFrameを初期化 8result_df = pd.DataFrame() 9 10# 連番ファイルを順に処理 11for i in range(1, 270): # (1,n) nはファイルの数(適切な値に置き換え) 12 # ファイル名を生成 13 file_name = os.path.join(folder_path, f'PIVlabaveisou_{i}.csv') 14 15 # CSVファイルを読み込み、NaN値を'0'で埋める 16 df = pd.read_csv(file_name, header=None, usecols=[0, 1, 2, 3], encoding="SHIFT-JIS") 17 dft = df.fillna('0') 18 19 # Create an empty dictionary to store the matrix data for the 2nd and 3rd columns 20 matrix_data_2nd_col = {} 21 matrix_data_3rd_col = {} 22 23 # Iterate through unique values in the first column 24 for unique_value in dft[0].unique(): 25 group = dft[dft[0] == unique_value] 26 27 # Get values from the 2nd and 3rd columns (0-based index) 28 values_2nd_col = group[2].values 29 values_3rd_col = group[3].values 30 31 matrix_data_2nd_col[unique_value] = values_2nd_col 32 matrix_data_3rd_col[unique_value] = values_3rd_col 33 34 # Create DataFrames from the dictionaries 35 matrix_2nd_col = pd.DataFrame.from_dict(matrix_data_2nd_col, orient='index') 36 matrix_3rd_col = pd.DataFrame.from_dict(matrix_data_3rd_col, orient='index') 37 38 # Concatenate matrix_3rd_col below matrix_2nd_col 39 combined_matrix = pd.concat([matrix_2nd_col, matrix_3rd_col], axis=0) 40 41 # 縦ベクトルに変換 42 vector = combined_matrix.stack() 43 44 # Add the vector as a new column to the result DataFrame 45 result_df[f'Column_{i}'] = vector 46 47# Save the combined results as a single CSV file 48result_df.to_csv(os.path.join(folder_path, 'combined_results.csv'), index=False)
試したこと
・pythonの再起動
・インデントを削除し再度半角で入れ直し
補足情報(FW/ツールのバージョンなど)
Python 3.12.0
ファイルに問題はなさそうです。
> pythonの再起動
とありますが、これはどういう操作をしたのですか?
> まですべてに IndentationError: unexpected indent が発生してしまいます.
とありますが、「すべてに」というのはどういう意味ですか?
このファイルの内容をどのように実行していますか?
・再起動,このファイルの実行方法について
>コマンドプロンプトでexit()を入力して再度pythonと入力し,起動しました
・二番目のfor(24行目)の後から result_df[f'Column_{i}'] = vector まで(45行目)の間のコードそれぞれにIndentationError: unexpected indent が表示されてしまいます.(24~45行目までの各コードに合計11個の同様のエラー)
27行目のコメントのインデントを合わせてみるとどうなります?
何を使っていて、何をした時に、どこに メッセージが出るのか? という情報がないのですが、スクリーンショットの方が早いかもしれません
皆様のおかげで無事エラーがでることなく一つのcsvファイルに出力できたのですが,なぜか1つ目のファイルの数値のみがまったく異なる値で出力されてしまいました.なにかコードに不具合あるのでしょうか.

回答2件
あなたの回答
tips
プレビュー