[英]How to split a string and update the dictionary in csv file in python?
所以我有一個CSV文件,里面帶有庫存數據,格式為:
日期,“打開”,“高”,“低”
2012-11-14,660.66,662.18,123.4
我已成功將所有相關數據轉換為正確的變量類型,即所有Open值均為浮點數,High為浮點數,date為字符串
到目前為止,這是我的代碼:
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)
如何刪除每個日期值,以便在日期值中沒有“-”? 然后將它們轉換為整數? 我嘗試使用日期時間,但我無法真正理解它。
消除-
S和轉換生成的字符串為整數可能不會幫助你。 您將絕對要使用DateTime ,更具體地說是strptime:
類方法datetime。 strptime (date_string,格式)
返回對應於date_string的datetime,並根據格式進行解析。 這等效於datetime(*(time.strptime(date_string,format)[0:6]))。 如果無法通過time.strptime()解析date_string和format或返回的值不是時間元組,則會引發ValueError。 有關格式設置指令的完整列表,請參見strftime()和strptime()行為部分。
例如:
datetime.datetime.strptime('2012-11-14','%Y-%m-%d')
#datetime.datetime(2012, 11, 14, 0, 0)
另外,您似乎有一個財務時間序列。 無需讀取CSV並進行手動解析。 熊貓恰恰可以很好地滿足您的需求。
由於數據保存在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.