日付と時刻を単一の日時インデックスに結合する
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
私の素朴な傾向は、マルチインデックスよりも単一のインデックスを好むことです。
- Zen of Python が主張するように、「フラットはネストよりも優れています」。
- 日時は 1 つの概念的なオブジェクトです。そのように扱ってください。(年、月、日、時、分などの複数の列よりも、1 つの datetime オブジェクトを使用する方が適切です。同様に、2 つよりも 1 つのインデックスを使用する方が適切です。)
ただし、私は 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), ...)