Столбец в кадре с плавающей точкой с отсутствующими значениями в правильном формате даты, например, с 201912 по DE C -2019 - PullRequest
0 голосов
/ 10 февраля 2020

Я хочу создать новый столбец в кадре данных путем преобразования столбца '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'

1 Ответ

0 голосов
/ 11 февраля 2020

Попробуйте что-нибудь подобное. Вам нужно преобразовать число с плавающей точкой в ​​строку и избавиться от десятичной дроби. Также% 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

...