簡體   English   中英

將datetime.date的表示形式轉換為pandas.Timestamp的表示形式

[英]Convert Representation of datetime.date to Representation of pandas.Timestamp

我已經將一堆代碼從使用datetime.date對象轉換為使用Timestamps 代碼由大量單元測試覆蓋,這意味着我需要將所有實例(如"datetime.date(2016, 12, 20)"為“Timestamp(2016-12-20)”。
簡單的解決方案是:

re.sub(r"datetime.date\((\d{4}), (\d{1,2}), (\d{1,2})\)", r"Timestamp(\1-\2-\3)", string)

在某些情況下哪種方法很好。 問題是date使用一個兩個數字來顯示月份和日期,而Timestamp總是使用兩個。 因此,如果日期是datetime.date(2016, 1, 1) "Timestamp(2016-1-1) datetime.date(2016, 1, 1)我將返回"Timestamp(2016-1-1) ”,但正確的表示應該是"Timestamp(2016-01-01)"

一些字符串實例還包含多個子字符串匹配。

有沒有辦法可以使用re.sub()來進行這種轉換?

string = "datetime.date(2016, 2, 20)"
def repl(matchobj):
    return "Timestamp(%s-%s-%s)"%(matchobj.group(1), matchobj.group(2).zfill(2), matchobj.group(3).zfill(2))

print re.sub(r"datetime.date\((\d{4}), (\d{1,2}), (\d{1,2})\)", repl, string)

輸出:

Timestamp(2016-02-20)

使用寬度為2 zfill

您可以使用pd.to_datetimeeval的組合
確保導入datetime以使eval工作。

import datetime
import pandas as pd

pd.to_datetime(eval("datetime.date(2016, 3, 31)"))

Timestamp('2016-03-31 00:00:00')

為什么不能簡單地替換datetime.date(使用pd.Timestamp(

In [26]: datetime.date(2000,1,30)
Out[26]: datetime.date(2000, 1, 30)

In [27]: pd.Timestamp(2000,1,30)
Out[27]: Timestamp('2000-01-30 00:00:00')

In [28]: datetime.date(2000,1,3)
Out[28]: datetime.date(2000, 1, 3)

In [29]: pd.Timestamp(2000,1,3)
Out[29]: Timestamp('2000-01-03 00:00:00')

正則表達式:

re.sub(r'datetime.date\s*\(', r'pd.Timestamp(', string)

pd.Timestamp docstring

TimeStamp是大熊貓相當於python的Datetime,並且 在大多數情況下可以與它互換 它是用於構成DatetimeIndex的條目的類型,以及用於pandas的其他面向時間序列的數據結構。

構造函數基本上有三種調用約定。 主表單接受四個參數。 它們可以通過位置或關鍵字傳遞。

參數---------- ts_input:datetime-like,str,int,float要轉換為Timestamp的值freq:str,DateOffset Offset哪個Timestamp將具有tz:string,pytz.timezone,dateutil.tz。 tzfile或無Timestamp將具有的時間區域。 unit:string numpy unit用於轉換,如果ts_input是int或float offset:str,DateOffset已棄用,請使用freq

另外兩種形式模仿datetime.datetime的參數。 它們可以通過位置或關鍵字傳遞,但不能兩者混合在一起。

:func: datetime.datetime參數

.. versionadded :: 0.19.0

year:int month:int day:int hour:int,optional,默認為0分鍾:int,可選,默認為0秒:int,可選,默認為0微秒:int,可選,默認為0 tzinfo:datetime.tzinfo ,可選,默認為None

暫無
暫無

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

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