所以我有一个csv文件,里面有库存数据,格式为:
日期,“开放”,“高”,“低”
2012-11-14,660.66,662.18,123.4
我已成功将所有相关数据转换为正确的变量类型,即所有Open值都是浮点数,High是浮点数,日期是字符串
到目前为止,这是我的代码:
types = [ ("Date", str), ("Open",float), ("High", float),
("Low", float), ("Close", float), ("Volume", int), ("Adj Close", float) ]
with open("googlePrices.csv") as f:
for row in csv.DictReader(f): # read a row as {col1: val1, col2: val2..}
row.update((key, conversion(row[key])) for key, conversion in types)
如何删除每个日期值,以便日期值中没有“ - ”?然后将它们转换为整数?我试图使用日期时间但我无法理解它。
答案 0 :(得分:0)
消除-
并将结果字符串转换为整数可能对您没有帮助。你绝对想要使用DateTime,更具体地说是strptime:
classmethod datetime。 strptime (date_string,format)
返回与date_string对应的日期时间,根据进行解析 格式。这相当于datetime(*(time.strptime(date_string, 格式)[0:6]))。如果是date_string和format,则引发ValueError time.strptime()无法解析或者返回值 不是时间元组。有关格式化指令的完整列表,请参阅 section strftime()和strptime()Behavior。
e.g:
datetime.datetime.strptime('2012-11-14','%Y-%m-%d')
#datetime.datetime(2012, 11, 14, 0, 0)
此外,您似乎有一个财务时间序列。无需读取CSV并手动解析。 Pandas完全符合您的需求。
答案 1 :(得分:0)
由于数据保存在csv文件中,读取后它们只是字符串,如果Date
的格式是固定的,那么只需删除-
。
types = [ ("Date", int), ("Open",float), ("High", float),
("Low", float), ("Close", float), ("Volume", int), ("Adj Close", float) ]
rowlist = []
with open("googlePrices.csv") as f:
for row in csv.DictReader(f):
row['Date'] = row['Date'].replace('-','')
try:
row.update((key, conversion(row[key])) for key, conversion in types)
except KeyError:
continue
rowlist.append(row)
输出:
>>> print rowlist
[{'Date': 20121114, 'High': 662.18, 'Open': 660.66, 'Low': 123.4}]
如果您想将Date
转换为timestamp
,请使用此选项:
>>>time.mktime(time.strptime('2012-11-14', '%Y-%m-%d'))
1352822400.0