我正在尝试从二进制文件中读取数据并将其放入结构中.前几个字节data.bin是:
03 56 04 FF FF FF ...
Run Code Online (Sandbox Code Playgroud)
我的实施是:
#include <iostream>
#include <fstream>
int main()
{
struct header {
unsigned char type;
unsigned short size;
} fileHeader;
std::ifstream file ("data.bin", std::ios::binary);
file.read ((char*) &fileHeader, sizeof header);
std::cout << "type: " << (int)fileHeader.type;
std::cout << ", size: " << fileHeader.size << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
我期待的输出是type: 3, size: 1110,但由于某种原因它是type: 3, size: 65284,所以基本上跳过文件中的第二个字节.这里发生了什么事?
我将来自三个完全不同的传感器源的时间序列数据作为CSV文件,并希望将它们组合成一个大的CSV文件.我已经设法使用numpy的genfromtxt将它们读成numpy,但我不知道该怎么做.
基本上,我所拥有的是这样的:
表格1:
timestamp val_a val_b val_c
Run Code Online (Sandbox Code Playgroud)
表2:
timestamp val_d val_e val_f val_g
Run Code Online (Sandbox Code Playgroud)
表3:
timestamp val_h val_i
Run Code Online (Sandbox Code Playgroud)
所有时间戳都是UNIX毫秒时间戳,如numpy.uint64.
而我想要的是:
timestamp val_a val_b val_c val_d val_e val_f val_g val_h val_i
Run Code Online (Sandbox Code Playgroud)
...所有数据按时间戳组合和排序.三个表中的每一个都已按时间戳排序.由于数据来自不同的来源,因此无法保证表1中的时间戳也将在表2或表3中,反之亦然.在这种情况下,空值应标记为N/A.
到目前为止,我已经尝试使用pandas来转换数据,如下所示:
df_sensor1 = pd.DataFrame(numpy_arr_sens1)
df_sensor2 = pd.DataFrame(numpy_arr_sens2)
df_sensor3 = pd.DataFrame(numpy_arr_sens3)
Run Code Online (Sandbox Code Playgroud)
然后尝试使用pandas.DataFrame.merge,但我很确定这对我现在要做的事情不起作用.谁能指出我正确的方向?