如何将数据帧与不同频率的字符串时间戳合并

时间:2017-05-24 05:43:08

标签: python pandas

我有两个来自不同来源的csv数据文件,我想合并。两个文件的每一行都有一个字符串时间戳,但周期非常不同 - 一个是每2秒,另一个是每小时。我可以将它们导入到Pandas中,并尝试合并它们但有2个问题。

1)我可以使用pd.to_datetime将时间戳转换为pandas datetime64对象,但这会创建一个新系列,从而丢失数据列。转换是否可以“就地”完成? 我的尝试是: newdf = pd.to_datetime(calc_insol.iloc [:,0])#calc_insol是DF

2)假设我可以将两个DF都设置为正确的日期时间格式,如果时间戳周期的差异很大,它们是否可以合并。

每个DF的摘录如下所示。字符串时间戳为col 0,“data”为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作为datetime对象,col 1将是来自calc_insol的数据,而col 2将是来自meas_insol的数据。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为您需要创建新的class Color { public: static const int MAX = 0xffff; Color(int red, int green, int blue, int alpha = MAX); // stuff static const Color red; static const Color green; static const Color blue; static const Color white; static const Color black; // ... private: int m_red; int m_green; int m_blue; int m_alpha; }; const Color Color::red(MAX, 0, 0); const Color Color::green(0, MAX, 0); const Color Color::blue(0, 0, MAX); const Color Color::white(MAX, MAX, MAX); const Color Color::black(0, 0, 0); 列并与它们合并,然后按drop删除datetime列 - 然后原始列不会更改:

new