簡體   English   中英

熊貓用字符串轉換日期

[英]Pandas converting date with string in

我開始使用python和pandas以及matplotlib。 我正在使用超過百萬條目的數據。 我正在嘗試更改日期格式。 在CSV文件中,日期格式為23-JUN-11。 我希望將來使用日期來計算每位候選人的捐款金額。 如何將日期格式轉換為pandas的可讀格式?

這是剪切文件149條目的鏈接

我的代碼:

%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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM