处理 pandas 中的日期
dealing with dates in pandas
我在 DataFrame 中有主要由日期组成的列。
但也可能有字符串或空值。
我想从列中提取年份,但由于字符串值而出现错误。
有没有办法对此应用通用解决方案?不仅要获得一年或一个月,而且还要应用可能以此错误结束的其他功能。
我的意思是,我想了解这个问题的性质以及如何处理它。
代码就像
dates={'date':['11/03/2019','12/05/2021','','11/03/2021','x'],
'date2':['11/04/2019','12/03/2021','11/06/2021',np.nan,'ab'],
}
df2=pd.DataFrame(dates)
df2['year'] =pd.DatetimeIndex(df2['date']).year
the error messages
未知字符串格式:x
提前致谢!
你可以试试这个,
dates={'date':['11/03/2019','12/05/2021','','11/03/2021','x'],
'date2':['11/04/2019','12/03/2021','11/06/2021',np.nan,'ab'],
}
df =pd.DataFrame(dates)
df["date"] = pd.to_datetime(df['date'], errors = "coerce")
df["date2"] = pd.to_datetime(df['date2'], errors = "coerce")
df["year1"] = df["date"].dt.year
df["year2"] = df["date2"].dt.year
输出-
date
date2
year1
year2
0
2019-11-03 00:00:00
2019-11-04 00:00:00
2019.0
2019.0
1
2021-12-05 00:00:00
2021-12-03 00:00:00
2021.0
2021.0
2
NaT
2021-11-06 00:00:00
nan
2021.0
3
2021-11-03 00:00:00
NaT
2021.0
nan
4
NaT
NaT
nan
nan
如果您不希望数据框中有任何空值,请在添加 year1
和 year2
列之前执行 df.dropna(inplace = True)
。
我在 DataFrame 中有主要由日期组成的列。 但也可能有字符串或空值。 我想从列中提取年份,但由于字符串值而出现错误。 有没有办法对此应用通用解决方案?不仅要获得一年或一个月,而且还要应用可能以此错误结束的其他功能。 我的意思是,我想了解这个问题的性质以及如何处理它。
代码就像
dates={'date':['11/03/2019','12/05/2021','','11/03/2021','x'],
'date2':['11/04/2019','12/03/2021','11/06/2021',np.nan,'ab'],
}
df2=pd.DataFrame(dates)
df2['year'] =pd.DatetimeIndex(df2['date']).year
the error messages
未知字符串格式:x
提前致谢!
你可以试试这个,
dates={'date':['11/03/2019','12/05/2021','','11/03/2021','x'],
'date2':['11/04/2019','12/03/2021','11/06/2021',np.nan,'ab'],
}
df =pd.DataFrame(dates)
df["date"] = pd.to_datetime(df['date'], errors = "coerce")
df["date2"] = pd.to_datetime(df['date2'], errors = "coerce")
df["year1"] = df["date"].dt.year
df["year2"] = df["date2"].dt.year
输出-
date | date2 | year1 | year2 | |
---|---|---|---|---|
0 | 2019-11-03 00:00:00 | 2019-11-04 00:00:00 | 2019.0 | 2019.0 |
1 | 2021-12-05 00:00:00 | 2021-12-03 00:00:00 | 2021.0 | 2021.0 |
2 | NaT | 2021-11-06 00:00:00 | nan | 2021.0 |
3 | 2021-11-03 00:00:00 | NaT | 2021.0 | nan |
4 | NaT | NaT | nan | nan |
如果您不希望数据框中有任何空值,请在添加 year1
和 year2
列之前执行 df.dropna(inplace = True)
。