带条件的序列分割列



我的熊猫系列包含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

最新更新