如何从混合格式的列中提取年份
How to extract year from a column with mixed formats
我的数据集中有一列看起来有许多不同格式的日期。有时只有年月,有时只有年:
Date
1 January 1980
Oct-74
Oct-17
1980.0
-200
-50
8
我只想从此列中提取年份。对于格式为“mmm-yy”的日期,我想假设它们在 1921 年到 2020 年之间。所以我上面的列应该是这样的:
Year
1980
1974
2017
1980
-200
-50
8
如何在 Python 中执行此操作?任何帮助将不胜感激。
#here is the code for the first dataframe
data = {'date': ['1 January 1980','Oct-74', 'Oct-17', '1980.0', '-200.0', '-50']}
df= pd.DataFrame(data)
df
试试这个:
data = {'date': ['1 January 1980','Oct-74', 'Oct-17', '1980.0', '-200.0', '-50', '8']}
df= pd.DataFrame(data)
temp = df['date'].str.replace('[a-zA-Z]{3}-', '+').str.extract('([-+\.\d]{1,}$)')
m1 = temp[0].str.contains('\+')
temp[0] = temp[0].astype(float)
temp[0] = temp[0].where(~((m1)&(temp[0]>=21)), 1900+temp[0])
temp[0] = temp[0].where(~((m1)&(temp[0]<21)), 2000+temp[0])
输出:
我的数据集中有一列看起来有许多不同格式的日期。有时只有年月,有时只有年:
Date |
---|
1 January 1980 |
Oct-74 |
Oct-17 |
1980.0 |
-200 |
-50 |
8 |
我只想从此列中提取年份。对于格式为“mmm-yy”的日期,我想假设它们在 1921 年到 2020 年之间。所以我上面的列应该是这样的:
Year |
---|
1980 |
1974 |
2017 |
1980 |
-200 |
-50 |
8 |
如何在 Python 中执行此操作?任何帮助将不胜感激。
#here is the code for the first dataframe
data = {'date': ['1 January 1980','Oct-74', 'Oct-17', '1980.0', '-200.0', '-50']}
df= pd.DataFrame(data)
df
试试这个:
data = {'date': ['1 January 1980','Oct-74', 'Oct-17', '1980.0', '-200.0', '-50', '8']}
df= pd.DataFrame(data)
temp = df['date'].str.replace('[a-zA-Z]{3}-', '+').str.extract('([-+\.\d]{1,}$)')
m1 = temp[0].str.contains('\+')
temp[0] = temp[0].astype(float)
temp[0] = temp[0].where(~((m1)&(temp[0]>=21)), 1900+temp[0])
temp[0] = temp[0].where(~((m1)&(temp[0]<21)), 2000+temp[0])
输出: