我正在做数据清理,发现年份列有不同的格式:例如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