【发布时间】:2019-09-15 15:05:51
【问题描述】:
我在 Pandas 中有三个数据框,比如df1, df2 and df3。所有数据帧的第一列是时间戳(日期时间格式,如2017-01-01 12:30:00 等)这是每个第一列的示例:-
df1 TimeStamp
2016-01-01 12:00:00
2016-01-01 12:10:00
.....
df2 TimeStamp
2016-01-01 12:00:00
2016-01-01 12:10:00
.....
df3 TimeStamp
2016-13-01 12:00:00
2016-13-01 12:30:00
.....
如您所见,前两个间隔为 10 分钟,而第三个间隔为 30 分钟。我想做的是将所有 3 个数据帧合并在一起,这样对于由于不可用数据而导致不完全匹配的情况(例如 12:10:00 不适用于第三个数据帧),它将被视为 12:00:00 (前面的测量)用于合并目的。 (但当然,日期应该相同)请注意,所有数据框的大小都不同,但我想根据时间戳将它们合并在一起以进行分析。谢谢!
DESIRED RESULT:
df_final TimeStamp .. Columns of df1 Columns of df2 Columns of df3
2016-13-01 12:00:00
2016-13-01 12:10:00
2016-13-01 12:20:00
.....
更多详情基于建议的答案 首先,由于我的数据框(全部 3 个)没有索引作为时间戳,但有列作为时间戳,我将每个索引设置为时间戳:
df1.index = df1.TimeStamp
df2.index = df2.TimeStamp
df3.index = df3.TimeStamp
关于使用这个
u_index = df3.index.union(df2.index.union(df1.index))
我奇怪地得到了一个奇怪的输出,它不是像需要的那样定期间隔 10 分钟。
Index(['2016-01-01 00:00:00.000', '2016-01-01 00:00:00.000',
'2016-01-01 00:00:00.000', '2016-01-01 00:00:00.000',
...
'2017-12-31 23:50:00.000', '2017-12-31 23:50:00.000',
'2017-12-31 23:50:00.000', '2017-12-31 23:50:00.000',
dtype='object', name='TimeStamp', length=3199372)
因此,最终的 df1_n 数据帧的间隔为 30 min 而不是 10 mins(因为索引的联合没有正确完成)。我认为这里出了点问题,一旦建议的第 2 步 (u_index) 正常工作,一切将很容易合并数据框。
【问题讨论】:
-
对于你给出的例子,你想要的结果是什么?
-
@wwii 所需的结果(添加了一个编辑)将是一个每隔 10 分钟的数据帧,其中日期在所有 3 个中匹配,并且对于时间,因为 df3 的间隔为 30 分钟,我会考虑介于两者之间的测量值(比如 12:10、12:20 倍为 12:00,因为记录不可用)。谢谢
标签: python pandas dataframe datetime timestamp