Pandas添加时间列到日期索引

2024-06-16 11:16:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,日期索引类型是Timestamp,时间列是Date Time.Time

            Time  Value
Date
2004-05-01  0:15  3.58507  
2004-05-02  0:30  3.84625
              ...

如何将其转换为:

                    Value
Date
2004-05-01 0:15     3.74618
2004-05-01 0:30     3.58507
2004-05-01 0:45     3.30998

我写了一个代码,它确实有效,但不是很Python:

ind = frame.index.get_level_values(0).tolist()
tms = frame['Time']
new_ind = []
for i in range(0, len(ind)):
    tm = tms[i]
    val = ind[i] + timedelta(hours=tm.hour, minutes=tm.minute, seconds=tm.second)
    new_ind.append(val)

frame.index = new_ind
del frame['Time']

Tags: 数据代码类型newdateindextimevalue
1条回答
网友
1楼 · 发布于 2024-06-16 11:16:37

您可以首先转换列Time^{},然后添加到index^{}Time,并在必要时设置索引name

df.Time = pd.to_timedelta(df.Time + ':00', unit='h')
df.index = df.index + df.Time
df = df.drop('Time', axis=1)
df.index.name = 'Date'
print (df)
                       Value
Date                        
2004-05-01 00:15:00  3.58507
2004-05-02 00:30:00  3.84625

如果列Timedatetime.timefor me works强制转换为string第一个(如果需要,请添加:00):

df.Time = pd.to_timedelta(df.Time.astype(str), unit='h')
df.index = df.index + df.Time
df = df.drop('Time', axis=1)
df.index.name = 'Date'
print (df)
                       Value
Date                        
2004-05-01 00:15:00  3.58507
2004-05-02 00:30:00  3.84625

相关问题 更多 >