У меня есть фрейм данных Pandas, который составляет примерно 3 миллиона строк и 5 столбцов.Каждое значение довольно мало - примерно 20 символов или меньше.Когда я пытаюсь сериализовать в файл protobuf, это занимает примерно час.В конце концов, этот процесс должен будет сериализовать файлы, которые в 2000 раз длиннее, поэтому я пытаюсь сделать его более эффективным.
Я нахожусь в Python и могу преобразовать мой фрейм данных в любой другой тип объекта, чтобы увеличить общую скорость.Единственная реальная вещь, которая установлена в камне, это то, что вывод должен быть протобуфом.
Итак, мой вопрос, есть ли более эффективный способ сделать это, чем добавлять каждую строку одну за другой?Как это будет выглядеть?
Вот этот файл:
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)