熊猫时间格式

时间:2018-07-20 00:11:47

标签: python-2.7 pandas dataframe

我有一个包含15列的文件,前5个是日期和时间列["year", "month", "day", "hour", "min"...],我想将两个时间列组合在一起,使它们成为时间列,格式为“ H:M”,这样我很容易选择特定时间范围(例如19:00-24:00)的数据。

我一直在寻找解决方案,但是所有显示的内容都无法正常运行,而这全都取决于如何处理日期而不是时间。

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

您应该使用datetime对象,这使使用日期和时间对象非常简单。实际上,pandas.to_datetime的构建完全是为了解析您所拥有的列。 (您至少需要一个年,月和日列才能进行此解析)

import pandas as pd
df = pd.DataFrame({'year': [2001, 2012],
                   'month': [1, 12],
                   'day': [16, 19],
                   'hour': [1, 23],
                   'minutes': [5, 35],
                   'val1': [1.23, 1.151]})

df['Date'] = pd.to_datetime(df[['year', 'month', 'day', 'hour', 'minutes']])
print(df)
#   year  month  day  hour  minutes   val1                Date
#0  2001      1   16     1        5  1.230 2001-01-16 01:05:00
#1  2012     12   19    23       35  1.151 2012-12-19 23:35:00

然后,如果您愿意将其设置为index,则可以使用between_time的内置功能。<​​/ p>

df.set_index('Date').between_time('19:00', '23:40')
#                     year  month  day  hour  minutes   val1
#Date                                                       
#2012-12-19 23:35:00  2012     12   19    23       35  1.151

答案 1 :(得分:0)

假设df是具有这5列的数据框。您需要创建一个新列并将其设置为等于小时+“:” +分钟。

df['time'] = (df['hour'].astype(str) + ":" + df['min'].astype(str))

但是,我认为这种格式对于大多数数据处理而言会更好:

df['time'] = (df['hour'].astype(str) + df['min'].astype(str))

请注意:如果astype(str)df['hour']是熊猫数据框中的字符串类型,则不需要df['min']