簡體   English   中英

熊貓數據框to_datetime()錯誤地轉換了日期

[英]Pandas dataframe to_datetime() is converting date incorrectly

我有這種格式的日期-'17 -JUL-53'

當我pd.to_datetime('17-JUL-53')返回Timestamp('2053-07-17 00:00:00')

您可以說是正確的,但是實際返回的日期是1953-07-17。 在Excel中就可以了,我們如何使用to_datetime()做到這一點?

[edit]只是為了說明在python中將str從時間轉換為時間時會發生什么:

>>> time.strptime('17-JUL-53', '%d-%b-%y')
time.struct_time(tm_year=2053, tm_mon=7, tm_mday=17, tm_hour=0, tm_min=0,tm_sec=0, tm_wday=3, tm_yday=198, tm_isdst=-1)

我認為您需要在子字符串中添加19
有關datetime格式的更多信息在這里

import pandas as pd

s = '17-JUL-53'
d = s[:7] + '19' + s[7:]
print d
#17-JUL-1953
dt = pd.to_datetime(d, format='%d-%b-%Y')
print dt
#1953-07-17 00:00:00

%d-%b-%Y表示:

%d-月份中的天,為零填充的十進制數字
%b-月份作為語言環境的縮寫名稱
%Y-以世紀作為十進制數字的年份

如果您的所有約會都在1900世紀,我會這樣做:)

from dateutil.relativedelta import relativedelta
input ='17-jul-53'
output = pd.to_datetime(input)
output_clean = output - relativedelta(years=100)

您需要以某種方式提及您處於哪個世紀……在pandas這無法通過to_datetime函數來處理,因此您需要在上游進行。 這是使用正則表達式的方法:

import re
import pandas as pd

date = '17-JUL-53'

pd.to_datetime(re.sub(r'(\d{2}-\w{3}-)(\d{2})', r'\g<1>19\2', date))
#Timestamp('1953-07-17 00:00:00')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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