我有一个数据帧,Date索引类型是Timestamp,Time列是datetime.Time:
Time Value
Date
2004-05-01 0:15 3.58507
2004-05-02 0:30 3.84625
...
Run Code Online (Sandbox Code Playgroud)
我如何将其转换为:
Value
Date
2004-05-01 0:15 3.74618
2004-05-01 0:30 3.58507
2004-05-01 0:45 3.30998
Run Code Online (Sandbox Code Playgroud)
我编写了一个可行的代码,但它并不是非常pythonic:
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']
Run Code Online (Sandbox Code Playgroud) 我有一个数据框:
Date 0:15 0:30 0:45 ... 23:15 23:30 23:45 24:00
2004-05-01 3.74618 3.58507 3.30998 ... 2.97236 2.92008 2.80101 2.6067
2004-05-02 3.09098 3.84625 3.54672 ... 2.83725 2.93876 2.82762 2.6255
Run Code Online (Sandbox Code Playgroud)
我如何将其转换为:
Date value
2004-05-01 0:15 3.74618
2004-05-01 0:30 3.58507
2004-05-01 0:45 3.30998
...
Run Code Online (Sandbox Code Playgroud)
我写了一些确实有效的代码,但我确信可以在更优雅的几行代码中做同样的事情
cols = []
for col in frame.columns.values:
if col != '24:00':
dt = self.datetime(col, '%H:%M')
td = timedelta(hours=dt.hour, minutes=dt.minute)
else: td = timedelta(days=1)
dt1 = date + td
cols.append(dt1)
frame.columns = cols
frame = frame.T
Run Code Online (Sandbox Code Playgroud)