将多索引日期和时间恢复为单索引日期时间
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'))
过去两周我不得不用不同的日期时间格式绘制不同的时间序列。将它们转换成一种格式没有问题。现在我面临新的挑战,正在努力解决它。我从同事那里得到的所有数据 (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'))