Получить год и месяц в виде строки из даты со значениями NA - PullRequest
0 голосов
/ 03 мая 2018

Вот текущее значение df:

ID  Date
1   3/29/2017
2   
3   11/5/2015
4   
5   2/28/2017

Я пытаюсь получить год + месяц в виде строки в новом столбце. И это мой код:

df["Year"] = df["Date"].dt.year
df["Month"] = df["Date"].dt.month
df["yyyy_mm"] = df["Year"].map(str) + "-" + df["Month"].map(str)

Проблема в том, что когда я извлекаю год и месяц из даты, он возвращает тип с плавающей запятой.

ID  Date        Year        Month   yyyy_mm        I hope to get this
1   3/29/2017   2017.0      3.0     2017.0-3.0     2017-3
2                                   nan-nan         
3   11/5/2015   2015.0      11.0    2015.0-11.0    2015-11
4                                   nan-nan 
5   2/28/2017   2017.0      2.0     2017.0-2.0     2017-2

Я попытался использовать df["Date"].dt.year.astype(int) для преобразования его в int, чтобы не было .0, но я получил эту ошибку: Невозможно преобразовать неконечные значения (NA или inf) в целое число. Потому что там в столбце NAN.

Я не хочу заполнять весь год и месяц 0 или чем-то еще, я просто хочу оставить их пустыми, так как date пуст в этой строке.

1 Ответ

0 голосов
/ 03 мая 2018

Вы должны выполнить преобразование строк непосредственно из Date, используя pd.Series.dt.strftime.

Это не только гарантирует, что NaT строк останется NaT, но и строки будут лучше отформатированы, например, заполнение нулями по месяцам.

df["yyyy_mm"] = df['Date'].dt.strftime('%Y-%m')

print(df)

   ID       Date    Year  Month  yyyy_mm
0   1 2017-03-29  2017.0    3.0  2017-03
1   2        NaT     NaN    NaN      NaT
2   3 2015-11-05  2015.0   11.0  2015-11
3   4        NaT     NaN    NaN      NaT
4   5 2017-02-28  2017.0    2.0  2017-02
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...