解析CSV文件时出现KeyError

时间:2019-03-13 12:49:54

标签: pandas csv parsing keyerror

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,该索引未定义。重复问题的答案非常简短,因此无法弄清楚。更新后的代码如下,可以挑出错误吗?:

import pandas as pd

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

DAP = DAP.set_index('mtu','dap')
print(DAP.index)
index(['mtu', 'dap'], dtype='object', name='TweetID')

2 个答案:

答案 0 :(得分:0)

一旦您将一列设为索引,它就不再是一列,因此您必须按索引访问它。尝试进行操作

[supervisorio-fos] $ /bin/sh -xe /tmp/jenkins5883130100053455761.sh
+ cd minetrack-supervisorio-client
+ npm install
Process leaked file descriptors. See 
https://jenkins.io/redirect/troubleshooting/process-leaked-file-descriptors 
for more information
Build step 'Execute shell' marked build as failure
Finished: FAILURE

在设置任何索引列之前,在读取文件时都不会

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

或之后

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

答案 1 :(得分:0)

这就是我一天中的工作,如果您能提供帮助,defo会给您很好的评价。我感觉像个菜鸟,但必须从某个地方开始。无论如何,谢谢您的帮助!

xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:controls="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.GridView"

下面的函数给了我我想要的东西,但是我想为整个文件做它

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)))))

因此,总而言之,我无法将日期时间设置为索引(python不断提供其自己的索引),并且我想设置一个函数(在这种情况下为freq_dev)以重复csv中的'actual_freq'的值:

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