Как решить эту ошибку времени выполнения, которую я получаю в Python Pandas?

МОЕ ТРЕБОВАНИЕ - ИМЕТЬ ВЫВОД пользовательских функций open_duration(open_time): ИЛИ res_duration(res_time): в новом КОЛОННЕ ['Open Resolve Duration'] в selected_columns_df

import pandas as pdpd.options.mode.copy_on_write = True

    def calculate_totduration(sr_creation, sr_resolved):
    start_date = pd.to_datetime(sr_creation)    end_date = pd.to_datetime(sr_resolved)
    total_minutes = difference.total_seconds()/60    return total_minutes

    def open_duration(open_time):
    print(type(open_time))    #sr_open_time = open_time.astype(int)
    sr_open_time = pd.to_numeric(open_time)    
    if sr_open_time <=240:
        return('Open < 4 hours')    
    elif sr_open_time <=480:
        return('Open from 4 hrs to 8 hrs')    
    elif sr_open_time <=720:
        return('Open from 8 hrs to 12 hrs')    
    elif sr_open_time <=1440:
        return('Open 12 hrs to 24 hrs')    
    elif sr_open_time <=2880:
        return('Open 24 to 48 hrs')
    else:        return('OPEN > 48 hrs')
    
def res_duration(res_time):
    sr_res_time = pd.to_numeric(res_time)  
if sr_res_time <= 240:
        return('Within 4 hours')    
elif sr_res_time <=480:
        return('Bet 4 hrs to 8 hrs')    
elif sr_res_time <=720:
        return('8 hrs to 12 hrs')    
elif sr_res_time <=1440:
        return('12 hrs to 24 hrs')    
else:
        return('> 24 hrs')

df = pd.read_csv('C:\\Users\\XXXXXX\\Desktop\\PythonCodes\\Testing10.csv',sep=',',skiprows=0,low_memory=False,encoding='utf-8')

filtered_df = df[(df['Region/Circle']=='IND')]

selected_columns_df = filtered_df[['Product','Customer Name','SI Number','SI Name','SR Number','SR Status','Region/Circle','Case Type','Source','SR Creation Time','Resolved Time','Total Duration SUM','Case Type','Ser Segment']]

selected_columns_df['Total Minutes'] = selected_columns_df.apply(lambda row:calculate_totduration(row['SR Creation Time'],row['Resolved Time']),axis=1)

if selected_columns_df['SR Status'].str.lower == 'open' or selected_columns_df['SR Status'].str.lower == 're-open':
    selected_columns_df['Open Resolve Duration'] = selected_columns_df.apply(lambda row:open_duration(calculate_totduration(row['SR Creation Time'],pd.to_datetime('today'))),axis=1)
else:
    selected_columns_df['Open Resolve Duration'] = selected_columns_df.apply(lambda row :res_duration(row['Total Minutes']))    
    #selected_columns_df['Open Resolve Duration'] = selected_columns_df.apply(lambda row :res_duration(lambda row :calculate_totduration(row['SR Creation Time'],row['Resolved Time'])))

selected_columns_df.to_csv('MYoutfile4.csv')
print('FILE WRITTEN')
print(pd.to_datetime('today'))

Но я получаю следующую ошибку:

Файл «C:\Users\xXXXXXx\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\indexes\base.py», строка 3805, в get_loc вернуть self._engine.get_loc(casted_key) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл «index.pyx», строка 167, в pandas._libs.index.IndexEngine.get_loc Файл «index.pyx», строка 175, в pandas._libs.index.IndexEngine.get_loc Файл «pandas\_libs\index_class_helper.pxi», строка 70, в pandas._libs.index.Int64Engine._check_type KeyError: «Всего минут»

Вышеупомянутое исключение было непосредственной причиной следующего исключения:

Traceback (последний вызов последний): Файл «c:\Users\xXXXXXx\Desktop\PythonCodes\DATASETS.py», строка 71, в selected_columns_df['Open Resolve Duration'] = selected_columns_df.apply(лямбда-строка:res_duration(строка['Всего минут'])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ Файл «C:\Users\xXXXXXx\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\frame.py», строка 10374, в приложении. вернуть op.apply().finalize(self, метод="apply") ^^^^^^^^^^ Файл «C:\Users\xXXXXXx\AppData\Local\Programs\Python\Python312\Lib\site-your textpackages\pandas\core\apply.py», строка 916, в приложении. вернуть self.apply_standard() ^^^^^^^^^^^^^^^^^^^^^^ Файл «C:\Users\xXXXXXx\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\apply.py», строка 1063, в apply_standard результаты, res_index = self.apply_series_generator() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл «C:\Users\xXXXXXx\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\apply.py», строка 1081, в apply_series_generator результаты[i] = self.func(v, *self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл «c:\Users\xXXXXXx\Desktop\PythonCodes\DATASETS.py», строка 71, в selected_columns_df['Open Resolve Duration'] = selected_columns_df.apply(лямбда-строка:res_duration(строка['Всего минут']))

         ~~~^^^^^^^^^^^^^^^^^ 

Файл «C:\Users\xXXXXXx\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\series.py», строка 1121, в getitem вернуть self._get_value(ключ) ^^^^^^^^^^^^^^^^^^^^^ Файл «C:\Users\xXXXXXx\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\series.py», строка 1237, в _get_value loc = self.index.get_loc(метка) ^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл «C:\Users\xXXXXXx\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\indexes\base.py», строка 3812, в get_loc поднять KeyError(ключ) из ошибки KeyError: «Всего минут»

надо исправить отступ....

darren 16.06.2024 10:31
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы забыли добавить axis=1.

Заменять:

selected_columns_df['Open Resolve Duration'] = selected_columns_df.apply(lambda row :res_duration(row['Total Minutes']))   

С:

selected_columns_df['Open Resolve Duration'] = selected_columns_df.apply(lambda row :res_duration(row['Total Minutes']), axis=1)    

Спасибо, это сработало, но обнаружена еще одна проблема, и нужна помощь: оператор if ниже возвращает false, даже если он содержит строку «open» или «re-open», if selected_columns_df['SR Status'].str.lower == 'open ' или selected_columns_df['SR Status'].str.lower == 'повторно открыть':

Jaffer 16.06.2024 19:44

Используйте if selected_columns_df['SR Status'].str.lower() == 'open' or selected_columns_df['SR Status'].str.lower() == 're-open'. Но, кстати, если у вас есть еще вопрос, вам придется задать еще один вопрос. Если это сработало, пожалуйста, примите и проголосуйте.

U13-Forward 16.06.2024 19:46

@Jaffer Пожалуйста, прочитайте выше.

U13-Forward 16.06.2024 20:08

Другие вопросы по теме

Назначьте каждый элемент списка строке кадра данных pandas последовательно и одинаково
Как извлечь подстроку из столбца в фрейме данных на основе столбца из другого фрейма данных?
Вывод Python DataFrame.info не отражает удаленные строки
Графическая карта не отображает данные GeoJSON правильно – возможная проблема с геометрией или картографированием
Не удалось преобразовать число с плавающей запятой 64 в число с плавающей запятой 32 в Python
Как получить несколько показателей для каждой категории в кросс-таблице панд?
Как очистить таблицу csv, содержащуюся внутри кнопки JavaScript, с помощью Python?
Функция модели ARMA для будущих невидимых данных с датами начала и окончания?
Я продолжаю получать ошибку «функция не повторяется» с фильтром Pandas DataFrame, но та же функция работает с применением. Что мне не хватает?
Эффективный поиск значения столбца в столбце, содержащем списки, с помощью pandas