[英]Pandas converting date with string in
我開始使用python和pandas以及matplotlib。 我正在使用超過百萬條目的數據。 我正在嘗試更改日期格式。 在CSV文件中,日期格式為23-JUN-11。 我希望將來使用日期來計算每位候選人的捐款金額。 如何將日期格式轉換為pandas的可讀格式?
%matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
reader_bachmann = pd.read_csv('P00000001-ALL.csv' ,converters={'cand_id': lambda x: str(x)[1:]},parse_dates=True, squeeze=True, low_memory=False, nrows=411 )
date_frame = pd.DataFrame(reader_bachmann, columns = ['contb_receipt_dt'])
s = date_frame.iloc[:,0]
date_slice = pd.Series([s])
date_strip = date_slice.str.replace('JUN','6')
date = pd.to_datetime(s, format='%d%b%Y')
print(date_slice)
ValueError: could not convert string to float: '05-JUL-11'
您需要使用不同的日期格式字符串:
format='%d-%b-%y'
為什么?
錯誤消息提供了有關錯誤的線索:
ValueError:無法將字符串轉換為float:'05 -JUL-11'
格式字符串控制轉換,目前是:
format='%d%b%Y'
所需的領域是:
%y - year without a century (range 00 to 99)
%b - abbreviated month name
%d - day of the month (01 to 31)
缺少的是-
分隔數據字符串中的字段,以及兩位數年份的y
而不是四位數年份的當前Y
作為替代方案,您可以使用dateutil.parser直接解析包含字符串的日期,我已經為demo創建了一個隨機數據框 。
l = []
for i in range(100):
l.append('23-JUN-11')
B = pd.DataFrame({'Date':l})
現在,讓我們導入dateutil.parser並將其應用於我們的日期列
import dateutil.parser
B['Date2'] = B['Date'].apply(lambda x : dateutil.parser.parse(x))
B.head()
Out[106]:
Date Date2
0 23-JUN-11 2011-06-23
1 23-JUN-11 2011-06-23
2 23-JUN-11 2011-06-23
3 23-JUN-11 2011-06-23
4 23-JUN-11 2011-06-23
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.