请在csv文件中接近10个条目,如下所示
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 = 2013
和Discharged_Date = 2013
,如果{{ 1}}有Admitted_Date
,01-01-2013
应该有Discharged_Date
(1月到12月)
我尝试了可能性,但它变得更加混乱。我很感激,非常感谢。
预期输出:
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
答案 0 :(得分:1)
IIUC您可以先尝试转换列to_datetime
,然后使用YearEnd
,原始列的长度为4
mask
和loc
:
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