簡體   English   中英

將日期列和時間列合並到pandas數據框中的索引中

[英]Combine date column and time column into index in pandas data frame

我在CSV文件中有一個30秒間隔的時間序列數據,格式如下:

20120105, 080000,   1
20120105, 080030,   2
20120105, 080100,   3
20120105, 080130,   4
20120105, 080200,   5

如何使用這兩種不同的索引方案將其讀入pandas數據框:

1,將日期和時間合並為一個日期時間索引

2,使用date作為主索引,使用time作為multiindex數據幀中的輔助索引

這兩種方案的利弊是什么? 一般比另一個更優選嗎? 在我的情況下,我想看看時間分析,但我不完全確定哪個方案對我的目的更方便。 提前致謝。

  1. 將日期和時間合並為單個日期時間索引

     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 
  2. 使用date作為主索引,將time作為multiindex數據幀中的二級索引

     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的Zen所言,“Flat比嵌套更好”。
  • 日期時間是一個概念對象。 這樣對待它。 (對於年,月,日,小時,分鍾等,最好有一個日期時間對象而不是多個列。同樣,最好有一個索引而不是兩個。)

但是,我對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), ...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM