将分钟列设置为时间索引?

时间:2018-07-17 04:06:15

标签: python python-3.x pandas

我有一个5分钟间隔的一分钟时间戳的多索引数据帧。我正在尝试将“ TimeStamp”列转换为“ datetimeindex”,因此我可以在这里使用此解决方案(How do you clean and forward fill a multiple day 1 minute time series with pandas?)。我的样本数据:

            2002074266              2002074444
TimeStamp   Total        Freq       Total       Freq
HH:MM        Pc           Hz         Pc          Hz
06:50        3            10         7           13
06:55        4            11         8           14
07:00        5            12         9           15

有可能做到吗-我已经尝试了以下代码,但是不起作用。

df['TimeStamp'] = pd.to_datetime(df['TimeStamp'])
df = df.set_index('TimeStamp')

它返回KeyError:“ TimeStamp”。

这是我用来读取CSV文件的行:

df = pd.read_csv("Equipment.csv", header=[0,1], skiprows = 3, index_col=0)

任何指南/帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

我认为首先需要将参数skiprows更改为[2]

df = pd.read_csv("Equipment.csv", header=[0,1], skiprows = [2], index_col=0)

print (df)
      2002074266      2002074444     
           Total Freq      Total Freq
06:50          3   10          7   13
06:55          4   11          8   14
07:00          5   12          9   15

然后是DatetimeIndex解决方案:

df.index = pd.to_datetime(df.index, format='%H:%M')
df = df.resample('1min').ffill()
print (df)
                    2002074266      2002074444     
                         Total Freq      Total Freq
1900-01-01 06:50:00          3   10          7   13
1900-01-01 06:51:00          3   10          7   13
1900-01-01 06:52:00          3   10          7   13
1900-01-01 06:53:00          3   10          7   13
1900-01-01 06:54:00          3   10          7   13
1900-01-01 06:55:00          4   11          8   14
1900-01-01 06:56:00          4   11          8   14
1900-01-01 06:57:00          4   11          8   14
1900-01-01 06:58:00          4   11          8   14
1900-01-01 06:59:00          4   11          8   14
1900-01-01 07:00:00          5   12          9   15

TimedeltaIndex解决方案:

df.index = pd.to_timedelta(df.index + ':00')
df = df.resample('1min').ffill()
print (df)
         2002074266      2002074444     
              Total Freq      Total Freq
06:50:00          3   10          7   13
06:51:00          3   10          7   13
06:52:00          3   10          7   13
06:53:00          3   10          7   13
06:54:00          3   10          7   13
06:55:00          4   11          8   14
06:56:00          4   11          8   14
06:57:00          4   11          8   14
06:58:00          4   11          8   14
06:59:00          4   11          8   14
07:00:00          5   12          9   15