我想通过将'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'
尝试这样的事情。您需要将浮点数转换为字符串并去除小数点。另外,%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