熊猫数据框序列化为Protobuf-提高速度

时间:2018-12-20 15:58:26

标签: python protocol-buffers

我有一个熊猫数据框,大约有300万行和5列。每个值都非常小-大约20个字符或更少。当我尝试序列化为protobuf文件时,大约需要一个小时。最终,此过程将不得不序列化2000倍以上的文件,因此,我试图使其效率更高。

我在python中,可以将我的数据框转换为任何其他类型的对象,以提高整体速度。唯一固定的东西是输出必须是protobuf。

所以,我的问题是,有没有比逐行添加每一行更有效的方法了?那会是什么样?

这是原型文件:

syntax = "proto3";

package index_picker;

message unit{
  string field1 = 1;
  string field2= 2;
  int64 field3 = 3;
  string field4 = 4;

  message field5{
    int64 field51 = 1;
    int64 field52 = 2;
  }

  repeated field5 field55= 5;
}

message row{
  repeated unit unit1= 1;
}

我通过遍历每一行并添加以下内容进行序列化:

book = row3_pb2.row()

for index, row in df.iterrows():
    ProtoRow(book.unit1.add(), df, index)

0 个答案:

没有答案