Python 获得年度&;月份作为字符串,从日期开始,带有NA值
以下是当前的df:Python 获得年度&;月份作为字符串,从日期开始,带有NA值,python,pandas,datetime,Python,Pandas,Datetime,以下是当前的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
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)
问题是,当我从日期提取年份和月份时,它将返回float类型
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或其他东西填充全年和月份的na,我只想让它们保持为空,因为
date
在该行是空的 您应该使用直接从Date
执行字符串转换
这不仅确保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