熊猫read_fwf难以解释类似日期的字符串

时间:2019-04-12 00:21:32

标签: python pandas date

熊猫read_fwf难以解释类似日期的字符串

我正在将数百个固定宽度的文件读取到一个postgresql数据库中,并使用pandas read_fwf代码对其进行解析。

我的绊脚石试图从某一行的最后十列中的时间段中提取结束日期。

可以在NOAA网站的link上找到示例文件:

我的Python / pandas脚本中的关键代码段:

import os
import time
import requests
import pandas as pd
import time
import datetime
from dateutil.parser import *

## Load adapters
import psycopg2
import psycopg2.extensions

df = pd.read_fwf(ddFname, header=None, )

if str(df[0:1]).find('COOLING') >= 0:
    amtType = 'CDD'
elif str(df[0:1]).find('HEATING') >= 0:
    amtType = 'HDD'

prDate = str(df[3:4])[-10:-1]
print(prDate)

调用最后一行时,我得到以下信息:

SEP 24,...

当我需要以下内容时:

SEP 24, 2016

非常感谢您提供的所有帮助。

1 个答案:

答案 0 :(得分:0)

使用您发布的示例文件。以下对我有用:

df = pd.read_fwf(ddFname, header=None, )
str(df.at[4, 0])[-12:]
# Out[99]: 'SEP 24, 2016'

当您执行以下操作时:

str(df[3:5])

您正在调用pandas DataFrame的__repr__方法。 repr方法通常会截断大单元以提高可读性(就像在这种情况下一样)。对于这种情况,它看起来像:

repr(df[3:5])
Out[106]: '                                                   0    1\n3                                                NaN  NaN\n4  LAST DATE OF DATA COLLECTION PERIOD IS SEP 24,...  NaN'

str(_)[-10:-1]给出:

Out[107]: '4,...  Na'

您的文件和我的文件之间的索引不太匹配,但是希望您能更好地了解这里的情况。使用at将访问特定行和列的实际值(该值不会被截断)。