从pandas dataframe

时间:2017-10-04 13:08:44

标签: python pandas csv matplotlib dataframe

我正在尽我最大的努力从一个特别严重格式化的文件中绘制一些数据(我无法更改文件的格式,所以我必须围绕我遇到的问题构建)。我正在尝试从文件中导入数据,并删除一些我不需要的垃圾数据,例如错误消息,但我正在努力。

这里我有一个允许我打开我想要使用的文件的函数,以及一些将其格式化为数据框的解决方法:

headers = ['Date','Time','Pressure','Temperature','Bias','RefTemp', 'Garbage']
def plotDigitalFunction():
    infile=askopenfilename()

    df = pd.read_csv(infile,sep="\t",names=headers, skiprows=1, parse_dates=[['Date','Time']])
    df = df.drop('Garbage', axis=1)

我文件的顶部看起来像这样:

Date    Time    Pressure    Temperature Bias    Error
06.02.12    13:42:19:549         -2689      895524     1842052        27.0  ERROR: T1B1

所以,这里我有6个标题和7列。我正在跳过第一行,并设置我自己的标题并组合日期和时间,所以我有6(我需要在同一列中的日期和时间戳)。

我尝试在jupyter笔记本中使用此代码,并且它完美无缺。我得到这样的东西:

        Date_Time   Pressure    Temperature Bias    RefTemp
    0   06.02.12 13:42:19:549   -2689   895524  1842052 27.0
    1   06.02.12 13:42:20:546   -2689   895467  1841921 27.0
    2   06.02.12 13:42:21:544   -2689   895388  1841817 27.0
    3   06.02.12 13:42:22:543   -2691   895287  1841672 27.0

但是当我在python 3.6.2中运行相同的代码时,似乎只是列标题被删除,并且它下面的数据被移位并放在它左边的列下面。这不会奏效,我正在努力弄清楚我做错了什么。

我之前有一个解决方案,打开文件,然后创建一个临时的csv文件,然后我读取,这是有效的。但是要运行的数据量相当大,因此需要花费两倍的时间来处理。

我希望这个解释得很好,如果我需要详细说明,请毫不犹豫地提出问题。

提前致谢!

编辑: 我只是在控制台中尝试了相同的代码,使用硬编码的文件名,而不是使用tkinter的askopenfilename()使用“infile”。工作得很好。问题可能是因为这个吗?

1 个答案:

答案 0 :(得分:0)

可能是你使用的python版本。检查你使用jupyter使用的python版本并使用相同的版本。