在Python(Pandas)中合并不规则的日期值

时间:2013-03-30 03:25:26

标签: python regex pandas

我有一个DataFrame,其中包含一列我希望转换为日期格式的字符串值。在R中,我通常将其分解为一系列步骤,将??:??替换为12:00,剥离时间,将其追加到最后并使用POSIX函数进行转换。

我试图用更多 pythonic 方式在Python中复制它。

以下是我DataFrame(150,000行)的Series

的例外情况
index  date
0    21/08/2001 10:20
1     19/09/2005 9:50
2     ??:?? 04-Jun-01
3    16/08/2004 7:15 
4     ??:?? 04-Jan-01 
5     23/01/2001 9:25 
6    24/01/2001 11:16 
7     ??:?? 05-Feb-01 
8     24/01/2001 8:30 
9    24/01/2001 15:15

以下是我的尝试(我已经将摘录称为tmp。):

我以为我可以使用列表推导和正则表达式替换如下:

[re.sub('\\?\\?:\\?\\?', '12:00', tmp) for i in tmp[i]]

我想要做的是将??:??替换为12:00,然后对其进行概括,以便我可以将其与tmp.apply一起使用。

感谢任何建议。

1 个答案:

答案 0 :(得分:1)

您可以使用Series.str.replace()

date = """21/08/2001 10:20
19/09/2005 9:50
??:?? 04-Jun-01
16/08/2004 7:15 
??:?? 04-Jan-01 
23/01/2001 9:25 
24/01/2001 11:16 
??:?? 05-Feb-01 
24/01/2001 8:30 
24/01/2001 15:15""".split("\n")

s = pd.Series(date)
s.str.replace("\?\?:\?\?", "12:00")