在熊猫数据框中操纵时间范围

时间:2019-07-20 17:53:46

标签: python python-3.x pandas dataframe date-range

需要清理csv导入,这给了我一段时间(以字符串形式)。代码在底部;我目前在df上使用正则表达式和replace()来转换其他字符。只是不确定如何:

  1. 选择当前的24小时格式编号,然后添加:00
  2. 如何选择12小时格式编号并使它们成为24小时格式。

输入(从csv导入):

   break_notes
0        15-18
1  18.30-19.00
2      4PM-5PM
3          3-4
4     4-4.10PM
5      15 - 17
6      11 - 13

到目前为止,我看起来像(删除空格,AM / PM,用冒号替换点):

   break_notes
0          15-18
1    18:30-19:00
2            4-5
3            3-4
4         4-4:10
5          15-17
6          11-13

但是,我希望它看起来像这样('HH:MM-HH:MM'格式):

   break_notes
0    15:00-18:00
1    18:30-19:00
2    16:00-17:00
3    15:00-16:00
4    16:00-16:10
5    15:00-17:00
6    11:00-13:00

我的代码是:

data = pd.read_csv('test.csv')
data.break_notes = data.break_notes.str.replace(r'([P].|[ ])', '').str.strip()
data.break_notes = data.break_notes.str.replace(r'([.])', ':').str.strip()

1 个答案:

答案 0 :(得分:2)

这是您根据请求的输入数据所需的转换器功能。 if (C.chart != null) { C.chart.destroy(); C.chart = null; } C.chart = $.jqplot("chart", chartData, { 接受完整的值输入,将其分割成一个破折号,然后将其结果传递给convert_entry,因为一个输入项的两半均可单独转换。每次转换后,它都用破折号合并。

convert_single使用正则表达式搜索时间字符串中的重要部分。 它以一些数字convert_single(代表小时)开始,然后可选地以点或冒号和一些其他数字\d+(代表分钟)开始。然后选择AM或PM [.:]?(\d+)?(在这种情况下,仅PM与之相关)

(AM|PM)?