我想将最初作为CSV文件提供的每日时间表表示为Pandas DataFrame。计划中每行的关键是一天中的每小时范围。范围不重叠。例如:
00:00, 01:00, some data
01:00, 03:00, some more data
03:00, 04:30, some other data
如何创建一个数据框,其中一个索引级别代表开始到结束的小时范围?
答案 0 :(得分:0)
从您的示例数据框开始(在其上放置列名称):
In [78]: df
Out[78]:
start end other
0 00:00 01:00 some data
1 01:00 03:00 some more data
2 03:00 04:30 some other data
假设start和end是字符串,我们可以将其转换为to_datetime
的日期时间。这将使用默认日期,因为数据只有几小时:
In [79]: pd.to_datetime(df['end'], format='%H:%M')
Out[79]:
0 1900-01-01 01:00:00
1 1900-01-01 03:00:00
2 1900-01-01 04:30:00
Name: end, dtype: datetime64[ns]
但假设开始和结束总是在同一天,如果我们只使用日期时间计算开始和结束之间的时差,则此默认日期无关紧要:
In [80]: df['range'] = pd.to_datetime(df['end'], format='%H:%M') - pd.to_datetime(df['start'], format='%H:%M')
In [81]: df
Out[81]:
start end other range
0 00:00 01:00 some data 01:00:00
1 01:00 03:00 some more data 02:00:00
2 03:00 04:30 some other data 01:30:00