如何解析不同的字符串日期格式?
How to parse different string date formats?
正在处理 table 混合不同的字符串,可以推导出日期。
period
0 Q2 '20 Base
1 Q3 '20 Base
2 Q1 '21 Base
3 February '20 Base
4 March '20 Peak
5 Summer 22 Base
6 Winter 20 Peak
7 Summer 21 Base
8 Year 2021
9 October '21 Peak
我希望能够将其解析为时间戳,以便在 python 中进行分析。首先,理想情况下我想解析成 4 个新列 1) 天 2) 月 3) 季度 4) 年。然后使用这些列创建日期时间 (DD-MM-YYYY)。
period day month quarter year
0 Q2 '20 Base 01 04 1 2020
1 Q3 '20 Peak 01 07 3 2020
2 Q1 '21 Base 01 01 1 2021
3 February '20 Base 01 02 1 2020
4 March '20 Peak 01 03 1 2020
5 Summer 22 Base 01 04 2 2022
6 Winter 20 Peak 01 10 4 2020
7 Summer 21 Base 01 04 2 2021
8 Year 2021 01 01 1 2021
9 October '21 Base 01 10 4 2021
如何将其解析为 4 个新列?
我的想法是像这样为您的标识符设置字典数据结构:
datemap = { 'January' : {'day' : 1, 'month' : 1, 'quarter' : 1},
'February' : {'day' : 1, 'month' : 2, 'quarter' : 1},
'March' : {'day' : 1, 'month' : 3, 'quarter' : 1},
# and so on ...
'Spring' : {'day' : 1, 'month' : 1, 'quarter' : 1},
'Summer' : {'day' : 1, 'month' : 4, 'quarter' : 2},
'Fall' : {'day' : 1, 'month' : 7, 'quarter' : 3},
'Winter' : {'day' : 1, 'month' : 10, 'quarter' : 4},
'Q1' : {'day' : 1, 'month' : 1, 'quarter' : 1},
'Q2' : {'day' : 1, 'month' : 4, 'quarter' : 2},
'Q3' : {'day' : 1, 'month' : 7, 'quarter' : 3},
'Q4' : {'day' : 1, 'month' : 10, 'quarter' : 4},
'Year' : {'day' : 1, 'month' : 1, 'quarter' : 1} }
然后您可以通过查看第一个词 r['period'].split()[0]
(或年份的第二个词)来转换给定值 r['period']
,如下所示:
df['day'] = df.apply (lambda r: datemap[r['period'].split()[0]]['day'], axis=1)
df['month'] = df.apply (lambda r: datemap[r['period'].split()[0]]['month'], axis=1)
df['quarter'] = df.apply (lambda r: datemap[r['period'].split()[0]]['quarter'], axis=1)
df['year'] = df.apply (lambda r: "20" + r['period'].split()[1][-2:], axis=1)
正在处理 table 混合不同的字符串,可以推导出日期。
period
0 Q2 '20 Base
1 Q3 '20 Base
2 Q1 '21 Base
3 February '20 Base
4 March '20 Peak
5 Summer 22 Base
6 Winter 20 Peak
7 Summer 21 Base
8 Year 2021
9 October '21 Peak
我希望能够将其解析为时间戳,以便在 python 中进行分析。首先,理想情况下我想解析成 4 个新列 1) 天 2) 月 3) 季度 4) 年。然后使用这些列创建日期时间 (DD-MM-YYYY)。
period day month quarter year
0 Q2 '20 Base 01 04 1 2020
1 Q3 '20 Peak 01 07 3 2020
2 Q1 '21 Base 01 01 1 2021
3 February '20 Base 01 02 1 2020
4 March '20 Peak 01 03 1 2020
5 Summer 22 Base 01 04 2 2022
6 Winter 20 Peak 01 10 4 2020
7 Summer 21 Base 01 04 2 2021
8 Year 2021 01 01 1 2021
9 October '21 Base 01 10 4 2021
如何将其解析为 4 个新列?
我的想法是像这样为您的标识符设置字典数据结构:
datemap = { 'January' : {'day' : 1, 'month' : 1, 'quarter' : 1},
'February' : {'day' : 1, 'month' : 2, 'quarter' : 1},
'March' : {'day' : 1, 'month' : 3, 'quarter' : 1},
# and so on ...
'Spring' : {'day' : 1, 'month' : 1, 'quarter' : 1},
'Summer' : {'day' : 1, 'month' : 4, 'quarter' : 2},
'Fall' : {'day' : 1, 'month' : 7, 'quarter' : 3},
'Winter' : {'day' : 1, 'month' : 10, 'quarter' : 4},
'Q1' : {'day' : 1, 'month' : 1, 'quarter' : 1},
'Q2' : {'day' : 1, 'month' : 4, 'quarter' : 2},
'Q3' : {'day' : 1, 'month' : 7, 'quarter' : 3},
'Q4' : {'day' : 1, 'month' : 10, 'quarter' : 4},
'Year' : {'day' : 1, 'month' : 1, 'quarter' : 1} }
然后您可以通过查看第一个词 r['period'].split()[0]
(或年份的第二个词)来转换给定值 r['period']
,如下所示:
df['day'] = df.apply (lambda r: datemap[r['period'].split()[0]]['day'], axis=1)
df['month'] = df.apply (lambda r: datemap[r['period'].split()[0]]['month'], axis=1)
df['quarter'] = df.apply (lambda r: datemap[r['period'].split()[0]]['quarter'], axis=1)
df['year'] = df.apply (lambda r: "20" + r['period'].split()[1][-2:], axis=1)