熊猫用字符串转换日期

poo*_*098 4 python csv datetime numpy pandas

我开始使用python和pandas以及matplotlib.我正在使用超过百万条目的数据.我正在尝试更改日期格式.在CSV文件中,日期格式为23-JUN-11.我希望将来使用日期来计算每位候选人的捐款金额.如何将日期格式转换为pandas的可读格式?

这是剪切文件149条目的链接

我的代码:

%matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
Run Code Online (Sandbox Code Playgroud)

第一位候选人

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'])
Run Code Online (Sandbox Code Playgroud)

数据切片

  s = date_frame.iloc[:,0]
    date_slice = pd.Series([s])
    date_strip = date_slice.str.replace('JUN','6') 
Run Code Online (Sandbox Code Playgroud)

试图转换为新的日期格式

 date = pd.to_datetime(s, format='%d%b%Y')
    print(date_slice)
Run Code Online (Sandbox Code Playgroud)

这是错误消息

ValueError: could not convert string to float: '05-JUL-11'
Run Code Online (Sandbox Code Playgroud)

Ste*_*uch 6

您需要使用不同的日期格式字符串:

format='%d-%b-%y'
Run Code Online (Sandbox Code Playgroud)

为什么?

错误消息提供了有关错误的线索:

ValueError:无法将字符串转换为float:'05 -JUL-11'

格式字符串控制转换,目前:

format='%d%b%Y'
Run Code Online (Sandbox Code Playgroud)

所需的领域是:

%y - year without a century (range 00 to 99)
%b - abbreviated month name
%d - day of the month (01 to 31)
Run Code Online (Sandbox Code Playgroud)

缺少的是将-数据字符串中的字段与y两位数年份分开,而不是四位数年份的当前字段Y.