【发布时间】:2018-11-19 06:13:44
【问题描述】:
我有一个包含各种列的 CSV 文件,在过去的几个月里一切都运行良好,直到我更新了文件并获得了新信息,现在 Python 似乎没有拾取这一列。我使用的是 Python 2.7,并确保我拥有最新版本的 pandas。
当我从 Yahoo Finance 下载 csv 文件时,我在 Excel 中打开它并更改了列的格式,以使其更具可读性,因为所有信息都在一个单元格中。我使用了“文本到列”功能,并根据逗号的位置拆分数据。
然后我使用 excel 中的 Trim 函数并左对齐数据,确保在每一列中单元格的开头没有空格。
我尝试了以下方法,但仍然得到相同或相似的结果:
在df = pd.read_csv("KIO.csv") 之后,我尝试使用df.head() 读取我是否可以读取前几列 - 但仍然出现相同的错误。
我尝试按照类似帖子中的建议重命名有问题的列,使用:
df = df.rename(columns={"Close": "Closing"}) - 在这里我又遇到了同样的错误。 “print df.columns”也导致了同样的问题。
“df[1]” - 最后给出了一个长错误“KeyError:1” - 如果有帮助,我可以打印整个内容。
添加“skipinitialspace=True” - 没有区别。
我认为问题可能出在实际的 csv 文件信息中,所以我删除了所有列并制作了自己的信息,但仍然遇到同样的错误。
以下是我的部分代码,因为总代码很长:
enter code here
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as pltdate
import datetime
import matplotlib.animation as animation
import numpy as np
df = pd.read_csv("KIO.csv", skipinitialspace=True)
#df.head()
#Close = df.columns[0]
#df= df.rename(columns={"Close": "Closing"})
df1 = pd.read_csv("USD-ZAR.csv")
kio_close = pd.DataFrame(df.Close)
exchange = pd.DataFrame(df1.Value)
dates = df["Date"]
dates1 = df1["Date"]
上述变量已在其余代码中使用,因此如果可以在此处解决此问题,则其余代码将是正确的。
这是错误的复制/粘贴:
块引用 回溯(最近一次通话最后): 文件“C:/Users/User/Documents/PycharmProjects/Trading_GUI/GUI_testing.py”,第 33 行,在 kio_close = pd.DataFrame(df.Close) getattr 中的文件“C:\Python27\lib\site-packages\pandas\core\generic.py”,第 4372 行 返回对象。getattribute(自我,姓名) AttributeError: 'DataFrame' 对象没有属性 'Close'
非常感谢您。
【问题讨论】:
-
按原样显示错误消息。
-
我将在上面进行编辑并按原样包含错误。
-
应该禁止在 Excel 中打开 .csv (*)。 Excel 尝试“衡量”数据类型并在幕后默默地转换内容 - 如果您再次保存 csv,您会在之前拥有良好数据的地方获得修改后的值 - 特别是类似日期的值会发生这种情况(即 21.3 => 3 月 21 日)等。确保您的数据没有以这种方式和方式损坏。
-
(*) 如果您稍后将其保存为 csv 并使用此 csv 与其他程序一起打开它
-
我不知道数据在Excel中是在后台更改的。当我保存 csv 文件时,它说保存时“可能包含与 CSV 不兼容的功能”。这是否意味着当我从 Yahoo Finance 下载文件时,我不能在 Excel 中以任何方式更改它?为什么我以前可以在 Excel 中更改它,但现在突然出现这些错误?
标签: python-2.7 pandas csv dataframe