我在Pandas DataFrame中有两个不同行的日期和时间戳。任何指针,如何将日期和时间一起解析成一行,可以进一步用于时间序列分析?
例如:
Row 1 Date 2017-12-11 00:00:00 2017-12-11 00:00:00 2017-12-11 00:00:00 2017-12-11 00:00:00
Row 2 Timestamp 01:00:00 02:00:00 03:00:00 04:00:00
然后有更多的行拥有更多的数据
第1排和第2排能否结合在一起,共同拥有完整的日期/时间戳信息?
我正在考虑应用转置,然后在列上使用parse_dates。在python中还有其他直接的方法吗?
发布于 2018-08-02 10:28:52
我认为最好的方法是首先将DataFrame
转置到columns
,然后从rows
转到每列相同的dtype:
df = df.T
然后通过to_datetime
转换列to_datetime
并添加Time
转换的to_timedelta
df['dates'] = pd.to_datetime(df['Date']) + pd.to_timedelta(df['Time'])
发布于 2018-08-02 10:36:06
如果您正在处理时间序列数据,我强烈建议您将datetime
组件作为索引。当您的数据more有一个包含非重复值的索引时,您可能会发现操作更有效。
你先转换数据的想法是好的。下面是一个很小的例子:
df = pd.DataFrame([['2017-12-11 00:00:00', '2017-12-11 00:00:00',
'2017-12-11 00:00:00', '2017-12-11 00:00:00'],
['01:00:00', '02:00:00', '03:00:00', '04:00:00'],
[1, 2, 3, 4], [5, 6, 7, 8]],
index=['Date', 'Timestamp', 'Data1', 'Data2'])
df = df.T
df.index = pd.to_datetime(df.pop('Date')) + pd.to_timedelta(df.pop('Timestamp'))
由此产生的数据文件:
print(df)
Data1 Data2
2017-12-11 01:00:00 1 5
2017-12-11 02:00:00 2 6
2017-12-11 03:00:00 3 7
2017-12-11 04:00:00 4 8
你现在有了一个DatetimeIndex
print(df.index)
DatetimeIndex(['2017-12-11 01:00:00', '2017-12-11 02:00:00',
'2017-12-11 03:00:00', '2017-12-11 04:00:00'],
dtype='datetime64[ns]', freq=None)
https://stackoverflow.com/questions/51651243
复制相似问题