我在CSV文件中有一个30秒间隔的时间序列数据,格式如下:
20120105, 080000, 1
20120105, 080030, 2
20120105, 080100, 3
20120105, 080130, 4
20120105, 080200, 5
如何使用这两种不同的索引方案将其读入pandas数据框:
1,将日期和时间合并为一个日期时间索引
2,使用日期作为主索引,将时间用作多索引数据框中的辅助索引
这两种方案的优点和缺点是什么?一般比另一个更优选吗?在我的情况下,我想看看时间分析,但我不完全确定哪个方案对我的目的更方便。提前谢谢。
答案 0 :(得分:7)
将日期和时间合并为一个日期时间索引
df = pd.read_csv(io.BytesIO(text), parse_dates = [[0,1]], header = None, index_col = 0)
print(df)
# 2
# 0_1
# 2012-01-05 08:00:00 1
# 2012-01-05 08:00:30 2
# 2012-01-05 08:01:00 3
# 2012-01-05 08:01:30 4
# 2012-01-05 08:02:00 5
使用date作为主索引,将time作为辅助索引 多索引数据框
df2 = pd.read_csv(io.BytesIO(text), parse_dates = True, header = None, index_col = [0,1])
print(df2)
# 2
# 0 1
# 2012-01-05 80000 1
# 80030 2
# 80100 3
# 80130 4
# 80200 5
我天真的倾向是偏好多索引的单个索引。
然而,我对Pandas并不十分熟悉,在进行时间分析时,使用多索引可能会有一些优势。
我会尝试两种方式编写一些典型的计算方法,然后根据编码的简易性,可读性和性能来看看哪一个我更喜欢。
这是我的设置,以产生上述结果。
import io
import pandas as pd
text = '''\
20120105, 080000, 1
20120105, 080030, 2
20120105, 080100, 3
20120105, 080130, 4
20120105, 080200, 5'''
你当然可以使用
pd.read_csv(filename, ...)
而不是
pd.read_csv(io.BytesIO(text), ...)