熊猫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
非常感谢您提供的所有帮助。
答案 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
将访问特定行和列的实际值(该值不会被截断)。