我正在尝试识别包含日期为字符串的列,以便将它们转换为更好的类型(DateTime或类似UTC的数字).使用的日期格式是27/11/2012 09:17我可以使用正则表达式搜索的\d{2}/\d{2}/\d{4} \d{2}:\d{2}.
我目前的代码是:
date_cols = []
df = cleaned_data
date_pattern = re.compile('\d{2}/\d{2}/\d{4} \d{2}:\d{2}')
for column in df:
if date_pattern.search(str(item)):
date_cols += [column]
return date_cols
Run Code Online (Sandbox Code Playgroud)
我确信这不利用它的功能pandas.有没有更好的方法,既可以识别列,也可以直接将它们转换为DateTime或UTC时间戳?
如果您要转换整列,可以使用convert_objects:
df.convert_objects(convert_dates=True)
Run Code Online (Sandbox Code Playgroud)
要提取列/系列中包含的日期,您可以使用findall:
In [11]: s = pd.Series(['1', '10/11/2011 11:11'])
In [12]: s.str.findall('\d{2}/\d{2}/\d{4} \d{2}:\d{2}')
Out[12]:
0 []
1 [10/11/2011 11:11]
dtype: object
In [13]: s.str.findall('\d{2}/\d{2}/\d{4} \d{2}:\d{2}').apply(pd.Series)
Out[13]:
0
0 NaN
1 10/11/2011 11:11
Run Code Online (Sandbox Code Playgroud)
*然后使用convert_objects转换为时间戳...*
| 归档时间: |
|
| 查看次数: |
846 次 |
| 最近记录: |