将日期和时间组合成一个日期时间索引
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
在多索引数据框中使用日期作为主索引和时间作为二级索引
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
我的天真倾向是更喜欢单个索引而不是多索引。
- 正如 Python 之禅所断言的那样,“平面优于嵌套”。
- 日期时间是一个概念对象。就这样对待它。(对于年、月、日、小时、分钟等,最好有一个日期时间对象而不是多列。同样,最好有一个索引而不是两个。)
但是,我对 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), ...)