我有一个熊猫数据框,大约有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)