在进行数据清洗时,如何统一不同年份的格式?



我正在做数据清理,发现年份列有不同的格式:例如2011,2012-2013,2010-14。如何纠正这些错误,在单元格中只显示最近一年,即2011年,2013年,2014年。

我尝试了下面的代码。它适用于'2012-2013',数据集更新到2013年,但对于'2010-14',输出是'0-14'而不是'2014'。如何解决这个问题?谢谢。

def clean_year(year):
if len(year) == 4:
return year
elif '-' in year:
start, end = year.split('-')
if len(end) == 2:
return ('20'+end)
else:
return end.strip()
dataset1['Year'] = dataset1['Year'].apply(clean_year)

对于我你的解决方案工作,这里是另一个解决方案:

dataset1 = pd.DataFrame({'Year': ['2011', '2012-2013', '2010-14']})
#split values to 2 columns DataFrame
df = dataset1['Year'].str.split('-', expand=True).astype(float)
print (df)
0       1
0  2011.0     NaN
1  2012.0  2013.0
2  2010.0    14.0
#if less values like 30 add 2000 and then maximal value
dataset1['Year'] = df.mask(df.lt(30), df.add(2000)).max(axis=1).astype(int)
print (dataset1)
Year
0  2011
1  2013
2  2014

最新更新