【发布时间】:2017-10-24 07:06:36
【问题描述】:
我有 2 个来自不同来源的 csv 数据文件,我想合并它们。两个文件的每一行都有一个字符串时间戳,但周期非常不同——一个是每 2 秒,另一个是每小时。我可以将它们导入 Pandas,并尝试合并它们,但有两个问题。
1) 我可以使用 pd.to_datetime 将时间戳转换为 pandas datetime64 对象,但这会创建一个新系列,从而丢失数据列。转换可以“就地”完成吗? 我的尝试是: newdf = pd.to_datetime(calc_insol.iloc[:,0]) # calc_insol 是DF
2) 假设我可以将两个 DF 转换为正确的日期时间格式,考虑到时间戳期间的巨大差异,它们是否可以合并。
每个 DF 的摘录如下所示。字符串时间戳是 col 0,“数据”在 col 1 calc_insol:
0 2017-May-19 2:00:00 0
1 2017-May-19 3:00:00 0
2 2017-May-19 4:00:00 0
3 2017-May-19 5:00:00 0
4 2017-May-19 6:00:00 0
5 2017-May-19 7:00:00 0
6 2017-May-19 8:00:00 497.5
7 2017-May-19 9:00:00 685.2
8 2017-May-19 10:00:00 768.4
9 2017-May-19 11:00:00 806.3
10 2017-May-19 12:00:00 816.6
11 2017-May-19 13:00:00 803.1
12 2017-May-19 14:00:00 760.6
13 2017-May-19 15:00:00 668.7
14 2017-May-19 16:00:00 456.8
15 2017-May-19 17:00:00 0
16 2017-May-19 18:00:00 0
17 2017-May-19 19:00:00 0
18 2017-May-19 20:00:00 0
19 2017-May-19 21:00:00 0
20 2017-May-19 22:00:00 0
21 2017-May-19 23:00:00 0
22 2017-May-20 0
meas_insol:
2017-May-19 11:59:57 89.8
2017-May-19 11:59:59 80.57
2017-May-19 12:00:01 90.64
2017-May-19 12:00:03 93.15001
2017-May-19 12:00:05 85.6
2017-May-19 12:00:07 78.89
2017-May-19 12:00:09 85.6
2017-May-19 12:00:11 75.53
2017-May-19 12:00:13 93.99
2017-May-19 12:00:15 93.15001
2017-May-19 12:00:17 92.32
2017-May-19 12:00:19 87.28
2017-May-19 12:00:21 77.21
2017-May-19 12:00:23 92.32
2017-May-19 12:00:25 79.73001
2017-May-19 12:00:27 76.37001
2017-May-19 12:00:30 74.69
2017-May-19 12:00:32 88.96
2017-May-19 12:00:34 73.85
2017-May-19 12:00:36 78.89
2017-May-19 12:00:38 76.37001
2017-May-19 12:00:40 77.21
2017-May-19 12:00:42 88.12
2017-May-19 12:00:44 87.28
2017-May-19 12:00:46 88.12
2017-May-19 12:00:48 79.73001
2017-May-19 12:00:50 74.69
2017-May-19 12:00:52 77.21
2017-May-19 12:00:54 83.92
2017-May-19 12:00:56 73.85
2017-May-19 12:00:58 83.92
2017-May-19 12:01:00 83.08001
2017-May-19 12:01:02 74.69
2017-May-19 12:01:04 78.89
2017-May-19 12:01:06 73.85
2017-May-19 12:01:08 86.44
2017-May-19 12:01:10 74.69
2017-May-19 12:01:12 73.01
2017-May-19 12:01:14 68.82
2017-May-19 12:01:16 83.92
理想情况下,完成的 DF 将 col 0 作为日期时间对象,col 1 将是来自 calc_insol 的数据,而 col 2 将是来自 meas_insol 的数据。 任何帮助将不胜感激。
【问题讨论】:
-
如果我的答案没有所需的输出,您可以将其添加到问题中吗?日期之间也没有匹配,你能改变它吗? (样本中的 3 -5 行是可以的)。谢谢。
-
谢谢 - 我更改了数据选择,使它们重叠。还使用了您的建议,现在已经在每个文件中修复了时间戳。我现在无法检查合并,但明天回到办公室时会检查。
-
对不起,现在我有点困惑 - 你需要先将
meas_insol上采样到hours像calc_insol然后合并吗? -
否 - calc_insol 列可以是稀疏的,因此 calc 的时间戳只有 1 小时,而 meas 的时间戳为 2 秒。在实践中,每 2 秒进行一次测量,但仅每小时计算一次。
-
好的,那么它们的数据框是如何连接的?仅通过
calc_insol的日期时间以小时精度计算?所以输出是 daframe,所有日期都从两个 df 匹配?