突然我得到这个错误“无法设置带有非时间戳的时间戳”

时间:2017-12-12 21:27:24

标签: python linux pandas datetime 32bit-64bit

还是觉得自己是新手。 : - )

有一段时间以来,我已经从Linux Mint 18.2 32位和新的Linux Mint 18.2 64位收集了Yahoo的库存数据。

突然今天,在绘制数据时,我的64位系统出现错误。 32位系统正在运行

我得到两个错误:第一个是:

The file pandas/_libs/index.pyx could not be opened.
Reason: [Errno 2] Ingen sådan fil eller filkatalog: 'pandas/_libs/index.pyx'

这个文件不在_libs中是正确的,但它无法从Github获取它,在32位系统上它也没有。

32位系统的pandas为0.20.3,64位系统的pandas为0.21.0。

我认为在64位系统上安装fix_yahoo_finance时更新了。我的32位系统有一个旧版本。 第二个错误是:

Exception "unhandled ValueError"
cannot set a Timestamp with a non-timestamp
File: pandas/_libs/index.pyx, Line: 509

我的代码是:

import pandas as pd
import csv
import glob
import matplotlib.pyplot as plt
import pylab
import numpy as np
from matplotlib.widgets import CheckButtons
import datetime


startplot = datetime.datetime(2017,1,1)
end = datetime.date.today()

print(startplot)


ferms = glob.glob("DOWJones_stock/*.csv")

for ferm in ferms:
    data = pd.read_csv(ferm,  header=0)
    data['Date'] = pd.to_datetime(data['Date'])
    data["20d"] = np.round(data["Close"].rolling(window = 20, center = False).mean(), 2)
    data["70d"] = np.round(data["Close"].rolling(window = 70, center = False).mean(), 2)
    data['plot'] = (data['Date'] > startplot) & (data['Date'] <= end) 
    plotdata=data[data['plot']]
    plotdata
    # print(data)
    # data.head()
    pylab.rcParams['figure.figsize'] = (25, 14)
    plt.rcParams['figure.dpi'] = 80
    plt.rcParams['legend.fontsize'] = 'medium'
    plt.rcParams['figure.titlesize'] = 'large'
    plt.rcParams['figure.autolayout'] = 'true'
    plt.rcParams['xtick.minor.visible'] = 'true'
    plt.rcParams['grid.linestyle'] = '-'
    plt.rcParams['grid.color'] = 'k'
    plt.xlabel('Date')
    plt.ylabel('Close')
    plt.title(ferm)
    plt.plot(plotdata.loc[:,'Date'], plotdata.loc[:,'Close'], 'k', label='Close')
    plt.plot(plotdata.loc[:,'Date'], plotdata.loc[:,'20d'], 'g', label='20d')
    plt.plot(plotdata.loc[:,'Date'], plotdata.loc[:,'70d'], 'r', label='70d')
    legend = plt.legend(loc='upper center', shadow=True)
    plt.grid(True)
    rax = plt.axes([0.9, 0.91, 0.1, 0.1], frameon=False)
    check = CheckButtons(rax, ('Køb', 'Følg'), (False, False))
    def func(label):
        if label == 'Køb':
            with open('Køb.csv','a') as csv_file:
                writer = csv.writer(csv_file, delimiter=" ")
                writer.writerow(ferm)
        elif label == 'Følg':
            with open('Følg.csv','a') as csv_file:
                writer = csv.writer(csv_file, delimiter=" ")
                writer.writerow(ferm)
    check.on_clicked(func)
    plt.show()

DOWJones_stock目录中的一个.csv包含以下数据:

Date,Open,High,Low,Close,Adj Close,Volume
2015-12-31,52.799999,53.290001000000004,52.66,52.82,50.067657000000004,8292900
2016-01-04,52.009997999999996,52.610001000000004,51.610001000000004,52.48,49.745384,17174600
2016-01-05,52.790001000000004,53.470001,52.669998,53.150002,50.380466,11075500
2016-01-06,52.509997999999996,52.950001,52.209998999999996,52.419998,49.688507,12465900
2016-01-07,51.52,52.32,51.439999,51.959998999999996,49.252476,12720000

我做了一些测试,似乎就行了:

data['Date'] = pd.to_datetime(data['Date'])

是主要问题。 但为什么只能在我的64位系统上运行。 startplot日期绘制为2017-01-01 00:00:00,但在两个系统中都相同。

如果问题是pandas版本0.21.0,我不喜欢在我的32位系统上更新pandas

希望你们中的一位更有核心人物可以提供帮助。

关心亨宁

0 个答案:

没有答案