试图在python 中从数据集中提取年份
df["YYYY"] = pd.DatetimeIndex(df["Date"]).year
year
在新列中显示为小数点。
YYYY
2001.0
2002.0
2015.0
2022.0
如何让年份不带小数点?
您的输入中可能有null值,从而导致NaN和列的浮点类型。
无缺失值:
pd.DatetimeIndex(['2022-01-01']).year
Int64Index([2022], dtype='int64')
缺少值:
pd.DatetimeIndex(['2022-01-01', '']).year
Float64Index([2022.0, nan], dtype='float64')
我建议使用pandas.to_datetime
和convert_dtypes
:
pd.to_datetime(pd.Series(['2022-01-01', ''])).dt.year.convert_dtypes()
0 2022
1 <NA>
dtype: Int64
或者直接从初始字符串中提取年份。但为此,我们需要一个输入样本。
问题的示例程序
import pandas as pd
df = pd.DataFrame({'date': ['3/10/2000', '3/11/2000', '3/12/2000']})
df['date'] = pd.to_datetime(df['date'])
df['year'] = pd.DatetimeIndex(df['date']).year
print(df['year'])
熊猫自己照顾日期
如果没有,我们可以直接指定为
df["date_feild"] = pd.to_datetime(df["date_feild"])
希望它能让你明白。
如果不能,你可以指定df样本吗