小编ale*_*k66的帖子

Pandas将Time列添加到Date索引

我有一个数据帧,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)

python timedelta multiple-columns reshape pandas

6
推荐指数
1
解决办法
5844
查看次数

Pandas - 将行日期与列时间结合起来

我有一个数据框:

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)

python timedelta multiple-columns reshape pandas

5
推荐指数
1
解决办法
1352
查看次数

标签 统计

multiple-columns ×2

pandas ×2

python ×2

reshape ×2

timedelta ×2