Мне нужно преобразовать каждую строку массива панд / numpy в 1, новый столбец.Мне нужен самый быстрый способ.Я пытался найти метод для извлечения полной строки в виде байтового массива, но не могу найти никакой опции, без итерации всех столбцов, преобразования каждого значения столбца в байты и конкатенации.
В функции row_to_bytes я использую библиотеку hashlib и функцию md5, но мне не нужна криптография.Должен ли я реализовать его в C / C ++ или, может быть, есть какая-то библиотека, которую я могу использовать?
Теперь, это лучший метод, который у меня есть, но он очень медленный (у меня есть таблица с 5 миллионами записей и 40 атрибутами).
hashed = df.apply(lambda row: self.row_to_bytes(row), axis=1)
Спасибо за каждое предложение.
Я создал тестовый код:
import pandas as pd
import numpy as np
df = pd.DataFrame([["1",1],["2",2]])
x = df.values
def compute(x):
dtype = np.dtype('S{:d}'.format(x.shape[1] * x.dtype.itemsize))
y = np.frombuffer(x.tobytes(), dtype=dtype)
print(y)
compute(x)
Когда я несколько раз запускаю код в командной строке, я получаю разныерезультаты:
python test.py
[b'\xb0\x8a\xbb\x8c\xf3\x01\x00\x000\x80og'
b'p%\xc1\x8c\xf3\x01\x00\x00P\x80og']
python test.py
[b'\xb0\x8aCr,\x02\x00\x000\x80og' b'p%^r,\x02\x00\x00P\x80og']
python test.py
[b'\xb0\x8a"\xb7\xc9\x01\x00\x000\x80og' b'p%=\xb7\xc9\x01\x00\x00P\x80og']
Что может вызвать еще одну проблему?