将多索引日期和时间恢复为单索引日期时间

Revert multiindex Date and time to singleindex datetime

过去两周我不得不用不同的日期时间格式绘制不同的时间序列。将它们转换成一种格式没有问题。现在我面临新的挑战,正在努力解决它。我从同事那里得到的所有数据 (csv) 都有一个包含日期和时间的特定字段 --> 将其读入 pandas 数据框并重新格式化日期时间格式。今天我从一个不同的系统获得了新数据来处理两个索引列,一个用于日期,另一个用于时间。我的问题是这些索引列被设计为多索引列(见下文)。

旧数据:

Datetime Data
01/01/2021 00:00 0,15
01/01/2021 00:15 5,18
Datetime;Data
2021-01-01 00:15:00;1,829
2021-01-01 00:30:00;1,675
2021-01-01 00:45:00;1,501

新数据:

Date Time Data
01/01/2021 00:00 0,15
00:15 5,18
Date; Time; Data
01/01/2021;00:15;71,04
;00:30;62,8
;00:45;73,2
;01:00;73,48
;01:15;66,8
;01:30;67,48
;01:45;71,12
;02:00;73,88

使用以下代码将此 csv 读入 pandas 数据帧后,我无法将特定于时间的数据添加到现有数据中,因为索引不相等。 obtain = pd.read_csv('csv/data.csv', sep=';', encoding='utf-8', index_col=['Date', 'Time'], names=['Date', 'Time', 'Data'], dtype={'Date' : 'string', 'Time': 'string', \ 'Data': 'float'}, decimal=',')

如何将新数据的索引重置为 pandas 数据框中的单个索引作为日期时间列?

我尝试将索引转换为日期时间,如下所示 obtain.index = pd.to_datetime(obtain.index.map(' '.join)) obtain.index = pd.to_datetime(obtain.index)

您可以添加参数 parse_dates 如果重复 Date 值:

obtain = pd.read_csv('csv/data.csv', 
                     sep=';', 
                     encoding='utf-8', 
                     index_col=['Date', 'Time'], 
                     parse_dates=['Date', 'Time'], 
                     names=['Date', 'Time', 'Data'], 
                     dtype={'Data': 'float'},
                     decimal=',')

但是如果没有日期:

obtain = pd.read_csv('csv/data.csv', 
                     sep=';', 
                     encoding='utf-8', 
                     names=['Date', 'Time', 'Data'], 
                     dtype={'Data': 'float'},
                     decimal=',')


obtain.index = pd.to_datetime(obtain.pop('Date').ffill() + ' ' + obtain.pop('Time'))