簡體   English   中英

Pandas - 將日期轉換為日期時間,日-月-年到年月日因解析日期而失敗

[英]Pandas - converting dates to datetime, day-month-year to year month day fails with parse dates

我有一個包含 6 個日期列的患者和手術數據框。 日期采用日-月-年的格式。 要獲得住院時間,我需要從出院日期 (DISDATE) 中減去入院日期 [ADMIDATE]。 我想將日期列更改為日期時間列。

舉個例子

    ADMIDATE    DISDATE
0   06/06/2014  07/06/2014
1   23/06/2014  23/06/2014

如果使用

pd.read_csv('/Users/.......csv', parse_dates=['ADMIDATE', 'DISDATE'])

我得到

    ADMIDATE    DISDATE
0   2014-06-06  2014-07-06
1   2014-06-23  2014-06-23

6 月 7 日變成了 7 月 6 日。(DISDATE , row[0] ) 如果我使用更嚴格的

for col in ['ADMIDATE', 'DISDATE']:
    df[col] = pd.to_datetime(df[col], format='%d/%m/%Y')

有用

ADMIDATE    DISDATE
0   2014-06-06  2014-06-07
1   2014-06-23  2014-06-23

但它不會接受許多空行,例如在數據收集時患者尚未出院。 我可以在 excel 中格式化日期列以將 csv 轉換為年-月-日格式,然后使用解析日期並且它可以正常工作,但我想知道我可以用to_datetime做什么。

dayfirst

此參數強制解析器首先解釋這一天

df.apply(pd.to_datetime, dayfirst=True)

    ADMIDATE    DISDATE
0 2014-06-06 2014-06-07
1 2014-06-23 2014-06-23

要指定列:

df[['ADMIDATE', 'DISDATE']].apply(pd.to_datetime, dayfirst=True)

    ADMIDATE    DISDATE
0 2014-06-06 2014-06-07
1 2014-06-23 2014-06-23

error='coerce'

為了適應缺失的數據:

df[['ADMIDATE', 'DISDATE']].apply(
    pd.to_datetime, dayfirst=True, errors='coerce'
)

    ADMIDATE    DISDATE
0 2014-06-06 2014-06-07
1 2014-06-23 2014-06-23

暫無
暫無

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

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