2016-02-28 53 views
1

請我已經接近10項的CSV文件如下將一年年 - 月 - 日蟒蛇大熊貓CSV

PatienceID  Case  Treatment  Admitted_Date  Discharged_Date 
PAT1002   Fever  Yes   1929-02-10   1929-02-13 
PAT1023   Ebola  Yes   2015-10-21   2015-12-29 
PAT1003   HIV   No   2012    2014-02-21 
PAT1991   Headache  Yes   2013    2013 
PAT2028   Epilepsy  Yes   2011    2016 
PAT2931   Malaria  Yes   2016-01-23   2016 

請,如果我們研究了CSV,有Admitted_Date和/或Discharged_Date下值其中只有一年沒有月 - 日。我不知道如何完成日期月 - 日(即,使得Discharge_Date將先於承認如讓我們考慮Admitted_Date = 2013Discharged_Date = 2013,如果Admitted_Date01-01-2013那麼Discharged_Date應該有12-12-2013(一月至十二月)

我有。嘗試了可能性,但它變得混亂我很欣賞,感謝這麼多

預期輸出:

PatienceID  Case  Treatment  Admitted_Date  Discharged_Date 
    PAT1002   Fever  Yes  1929-02-10   1929-02-13 
    PAT1023   Ebola  Yes  2015-10-21   2015-12-29 
    PAT1003   HIV   No   2012-MM-DD  2014-02-21 
    PAT1991   Headache  Yes  2013-MM-DD   2013-MM-DD 
    PAT2028   Epilepsy  Yes  2011-MM-DD   2016-MM-DD 
    PAT2931   Malaria  Yes  2016-01-23   2016-MM-DD 

我已經試過到目前爲止

import pandas as pd 

DF = pd.read_csv('mydata.csv') 
for Admitted_Date, Discharged_Date in DF 
    pd.to_datetime(mydata.pop('Date'), format="%b%Y") 
+0

請告訴我們什麼你到目前爲止已經嘗試過。 –

+0

進口熊貓作爲PD DF = pd.read_csv( 'mydata.csv') 爲Admitted_Date,Discharged_Date在DF pd.to_datetime(mydata.pop( '日期'),格式= 「%B%Y」) – Payne

+0

請將您的代碼添加到您的答案中。粘貼後,選擇它並按下Ctrl + K縮進它。 –

回答

1

IIUC你可以嘗試先轉換柱to_datetime然後用YearEnd,其中原始列的長度爲4通過maskloc

df['Admitted_Date'] = pd.to_datetime(df['Admitted_Date']) 
mask = df['Discharged_Date'].str.len() == 4 
print mask 
0 False 
1 False 
2 False 
3  True 
4  True 
5  True 
Name: Discharged_Date, dtype: bool 

df['Discharged_Date'] = pd.to_datetime(df['Discharged_Date']) 
df.loc[mask, 'Discharged_Date' ] += pd.offsets.YearEnd() 
print df 
    PatienceID  Case Treatment Admitted_Date Discharged_Date 
0 PAT1002  Fever  Yes 1929-02-10  1929-02-13 
1 PAT1023  Ebola  Yes 2015-10-21  2015-12-29 
2 PAT1003  HIV  No 2012-01-01  2014-02-21 
3 PAT1991 Headache  Yes 2013-01-01  2013-12-31 
4 PAT2028 Epilepsy  Yes 2011-01-01  2016-12-31 
5 PAT2931 Malaria  Yes 2016-01-23  2016-12-31 
+0

請問是否可以從可用日期範圍創建新日期,例如在沒有單一日期的情況下(即未提供年份)?考慮PAT1991和Admitted_Date和Discharged_Date沒有給出,並且想要使用類似案例來判斷估計日期 – Payne

+0

如果沒有價值,它是如何估計的?用最小和最大'日期'來替換? – jezrael

+0

抱歉,佩恩,但我認爲它更復雜。你能發表新的問題嗎?請不要忘記'sample',期望'output'(帶有'dates')以及你想要做什麼。謝謝。 – jezrael