python - 如何规范 pandas 数据框中的以下日期?

标签 python regex python-3.x pandas datetime

我有以下dates数据框:

   dates
0  2012 10 4
1
2  2012 01 19
3  20 6 11
4  20 10 7
5  19 11 12
6
7  2013 03 19
8  2016 2 5
9  2011 2 19
10
11  2011 05 23
12  2012 04 5

如何将日期列标准化为:

     dates
0  2012 10 04
1
2  2012 01 19
3  2020 06 11
4  2020 10 07
5  2019 11 12
6
7  2013 03 19
8  2016 02 05
9 2011 02 19
10
11 2011 05 23
12 2012 04 05

我尝试使用正则表达式并分别拆分和调整每一列。然而我使任务复杂化了。是否可以将其标准化为后一个数据帧?规则是添加 0如果年份不完整或 20如果年份不完整,则位于字符串的开头,格式为 yyyymmdd .

最佳答案

解决方案:

x = (df.loc[df.dates.str.contains(r'\d+\s*\d+\s*\d+'), 'dates']
       .str.split(expand=True)
       .rename(columns={0:'year',1:'month',2:'day'})
       .astype(int)
)
x.loc[x.year <= 50, 'year'] += 2000
df['new'] = pd.to_datetime(x, errors='coerce').dt.strftime('%Y%m%d')

结果:

In [148]: df
Out[148]:
         dates       new
0    2012 10 4  20121004
1                    NaN
2   2012 01 19  20120119
3      20 6 11  20200611
4      20 10 7  20201007
5     19 11 12  20191112
6                    NaN
7   2013 03 19  20130319
8     2016 2 5  20160205
9    2011 2 19  20110219
10                   NaN
11  2011 05 23  20110523
12   2012 04 5  20120405

说明:

In [149]: df.loc[df.dates.str.contains(r'\d+\s*\d+\s*\d+'), 'dates']
Out[149]:
0      2012 10 4
2     2012 01 19
3        20 6 11
4        20 10 7
5       19 11 12
7     2013 03 19
8       2016 2 5
9      2011 2 19
11    2011 05 23
12     2012 04 5
Name: dates, dtype: object

In [152]: (df.loc[df.dates.str.contains(r'\d+\s*\d+\s*\d+'), 'dates']
     ...:    .str.split(expand=True)
     ...:    .rename(columns={0:'year',1:'month',2:'day'})
     ...:    .astype(int))
Out[152]:
    year  month  day
0   2012     10    4
2   2012      1   19
3     20      6   11
4     20     10    7
5     19     11   12
7   2013      3   19
8   2016      2    5
9   2011      2   19
11  2011      5   23
12  2012      4    5

关于python - 如何规范 pandas 数据框中的以下日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42354984/

相关文章:

python - 如何使用python从 "../../"和另一个路径获取正确的文件路径

python - 破折号 - 动态布局不会传播调整大小的图形尺寸,直到调整窗口大小

python - 从 python-kafka 转换为 confluent kafka - 如何使用 SASL_SSL、OAUTHBEARER 和 Tokens 创建奇偶校验

javascript - 您将如何使用正则表达式验证一串手机号码?

python - 调用了意外版本的 python3

javascript - javascript自动完成中的python函数调用

Python正则表达式: search . txt文件字符串

java - 这个正则表达式有些问题,我无法弄清楚

python-3.x - Paramiko 中的意外输出

python - 如何控制 Tkinter 中下拉菜单的位置?