python - 将年转换为年月日 python pandas csv

标签 python csv pandas dataframe

请注意,我的 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,Admissed_Date 和/或 Discharged_Date 下的值只有年份,没有月日。我不知道如何用 Month-DAY 来完成日期(即,Discharge_Date 将在已承认的日期之前,例如让我们考虑 Admissed_Date = 2013Discharged_Date = 2013,如果 Admissed_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")

最佳答案

IIUC你可以先尝试转换列to_datetime然后使用 YearEnd ,其中原始列的长度为 4 by 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

关于python - 将年转换为年月日 python pandas csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687215/

相关文章:

python - 根据最频繁的值删除列

python - 如果键可能不存在,则从 Python dict 读取

python - Seaborn python 改变绘图上的颜色系列

php - 读取 csv 文件的最快方法

sql - Azure 从 Azure 文件服务位置将 csv 文件批量导入 Azure SQL Server

python - 如何在 pandas 中将 N/A (NaT) 转换为 0

python - 在 python 中循环遍历资源

Python 打印不使用 __repr__、__unicode__ 或 __str__ 作为 unicode 子类?

python - 类型错误 : 'DataFrameReader' object is not callable

python - 如何将 seaborn 条形图绘制为子图?