我有一个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)
任何指南/帮助将不胜感激。谢谢。
答案 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