Панды вызывают KeyError(key) из err KeyError:, даже если ключ существует

Я пытаюсь создать скрипт для перебора файлов .csv в папке, а затем выполнить над ними некоторые вычисления перед сохранением в новый файл .csv. Мне удалось заставить это работать нормально при создании средних значений и процентов, но при попытке добавить некоторые условия возникает проблема KeyError.

Вот код, который я создал до сих пор:

import os
import pandas as pd
import csv


folder_path = 'D:/Libraries/Documents/data'


rtAvg = 'block1_respo.rt'
cond = 'block1_trigger'

output_file = 'results_compiled.csv'


df_list = []


for filename in os.listdir(folder_path):
    if filename.endswith('.csv'):
        # Load the CSV file into a data frame
        df = pd.read_csv(os.path.join(folder_path, filename))
    # This code will check if the column is missing, and will populate that row with "9999" if it is
        if rtAvg not in df.columns:
            df[rtAvg] = 9999
        
       
        rt_mean_b1 = df[rtAvg].mean()
        

        con1 = df.loc[df[cond]==101][rtAvg].mean()
        con2 = df.loc[df[cond]==102][rtAvg].mean()
        con3 = df.loc[df[cond]==103][rtAvg].mean()
        con4 = df.loc[df[cond]==104][rtAvg].mean()
    

    # Create a new row for the summary data
        summary_row = pd.DataFrame({
            'csv_file': filename,
            'rt_average': rt_mean_b1,
            '101_rt':con1,
            '102_rt':con2,
            '103_rt':con3,
            '104_rt':con4
        },index = [0])
    
    # Append the summary data to the list of data frames
        df_list.append(summary_row)
    

summary_df = pd.concat(df_list)


summary_df.to_csv( output_file, index = False)

Вот код ошибки, который я получаю:

con1 = df.loc[df[cond]==101][rtAvg].mean()
  File "C:\Program Files\PsychoPy\lib\site-packages\pandas\core\frame.py", line 3458, in __getitem__
    indexer = self.columns.get_loc(key)
  File "C:\Program Files\PsychoPy\lib\site-packages\pandas\core\indexes\base.py", line 3363, in get_loc
    raise KeyError(key) from err
KeyError: 'block1_trigger'

block1_trigger определенно существует. Я распечатал списки, и это там. Ранее я также пытался удалить пробел с помощью кода, но это не имело значения. Я также пробовал cond = 'block1_trigger' и 'block1_trigger', и ни один из них не дал ожидаемых результатов.


255
1

Ответ:

Решено

Я понял ошибку. В некоторых файлах этот столбец отсутствовал. Теперь я добавил код улова, чтобы разобраться.

if cond not in df.columns:
        df[cond] = 9999