KeyError при разборе файла CSV - PullRequest
0 голосов
/ 13 марта 2019
mtu,dap
06.01.2015 00:00 - 06.01.2015 01:00,36.90

Я пытаюсь преобразовать данные, разделенные запятыми, как показано на рисунке выше, в панды для дальнейшего анализа со следующим фрагментом кода:

import pandas as pd

DAP = pd.read_csv('xx.csv', 
    index_col = 'mtu',
    sep = ',',
    encoding="utf-8-sig")
#DAP = DAP.set_index('mtu')
date_time = DAP['mtu']
Hourly_DAP = DAP['dap']

Однако он продолжает давать мне следующую ошибку, сset_index включен и с index_col, пробовал другие решения, которые можно найти в Интернете, но ни одно из них не решает эту проблему:

KeyError: 'mtu'

Кто-нибудь сможет решить эту проблему?

Я обновил код в соответствии с повторяющимся вопросом до следующего, однако теперь я получаю nameError, что индекс не определен.Ответ на двойной вопрос очень краткий, поэтому не могу понять.Обновленный код выглядит следующим образом, может ли кто-нибудь выбрать ошибку?

1011 *

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Это то, на что я потратил свой день. Дефо даст вам хороший обзор, если вы можете помочь. Я чувствую себя нубом, но должен начать где-нибудь. В любом случае, спасибо за вашу помощь!

af = act_freq['actual_freq']
datetime = act_freq['datetime']
act_freq = pd.read_csv('xx.csv',
                  sep = ',',
                  encoding="utf-8-sig")
act_freq['datetime'] =  pd.to_datetime(act_freq['datetime'], 
        infer_datetime_format=True)

act_freq.set_index=act_freq['datetime']
grid_freq_des = 50

Следующая функция дала мне то, что я хотел, однако я хотел бы сделать это для всего файла

print(sum(abs(grid_freq_des-(af.head(150)))))

Так что я провел весь день, настраивая что-то вроде этого, что я не могу заставить работать (

  for af in range (act_freq['actual_frequency']):
        freq_dev = grid_freq_des - af
        print(sum(freq_dev))

Итак, подводя итог, я не могу установить дату и время в качестве индекса (python продолжает давать свой собственный индекс), и я хотел бы настроить функцию (в данном случае freq_dev), чтобы она повторяла значения 'actual_freq' в csv:

                  datetime  actual_freq
0      2019-01-01 00:00:00       50.038
1      2019-01-01 00:00:10       50.021
2      2019-01-01 00:00:20       50.013
3      2019-01-01 00:00:30       50.004
0 голосов
/ 13 марта 2019

Как только вы сделаете столбец индексом, он больше не будет столбцом, поэтому вы должны обращаться к нему по индексу.Попробуйте выполнить операции

date_time = DAP['mtu']
Hourly_DAP = DAP['dap']

перед настройкой любого столбца индекса, ни при чтении файла

DAP = pd.read_csv('xx.csv', 
    #index_col = 'mtu',
    sep = ',',
    encoding="utf-8-sig")

, ни после него

#DAP = DAP.set_index('mtu','dap')
...