Dataframe列浮动值缺少正确的日期格式,例如201912至DEC-2019

问题描述 投票:0回答:1

我想通过将'YYYYMM'列转换为正确的日期格式在数据框中创建一个新列。

YYYYMM   want the following format 
201910   OCT-2019
nan
201911   NOV-2019
201903   MAR-2019
nan

我尝试了以下代码:

if df['YYYYMM'].notnull:
    df['YYYYMM1']=[pd.to_datetime(df['YYYYMM'], format= '%Y%M') for x in str(df['YYYYMM'])]

结果:

TypeError: 'float' object is unsliceable
if df['YYYYMM'].notnull:
    df['YYYYMM1']=[datetime.strptime(x,'%Y%m').strftime('%b%y') for x in str(df['YYYYMM'])]

结果:

ValueError: time data '0' does not match format '%Y%m'
python dataframe date-format
1个回答
0
投票

尝试这样的事情。您需要将浮点数转换为字符串并去除小数点。另外,%M是分钟。您需要将月份转换为%m。

df = pd.DataFrame([201910,201911,201903,np.nan,np.nan],columns = ['YYYYMM'])

df['CONVERTED_DATE']=pd.to_datetime(df['YYYYMM'].astype(str).apply(lambda x: x.split('.')[0]),format='%Y%m').dt.strftime('%b-%y')

print(df['CONVERTED_DATE'])

0    Oct-19
1    Nov-19
2    Mar-19
3       NaT
4       NaT

© www.soinside.com 2019 - 2024. All rights reserved.