我的熊猫系列包含year
值。它们的格式不一致。例如,
df['year']
1994-1996
circa 1990
1995-1998
circa 2010
我想从string
中抓取year
。
df['Year'] = df['Year'].astype(str)
df['Year'] = df['Year'].str[:4]
这不适用于circa
的行。
我想用circa
处理行,如果年份存在,只抓取年份。
df['Year']
1994
1990
1995
2010
df['Year_Only']=df['Year'].str.extract(r'(d{4})')[:4]
您可以使用str.extract
然后转换为pd.Int16Dtype
:
df['Year'] = df['Year'].str.extract(r'(d{4})', expand=False).astype(pd.Int16Dtype())
print(df)
# Output
Year
0 1994
1 1990
2 1995
3 2010