2017-02-16 2 views
0

Я пытаюсь отправить dataframe с использованием программирования сокетов. Для этого мне нужно знать, как закодировать dataframe в байтах на клиенте, а затем декодировать его в dataframe на сервере.Как конвертировать для преобразования pandas DataFrame в байты и наоборот?

ответ

2

Вы можете использовать модульили pickle.

Первый сериализовать dataframe:

>>> df 
    A B 
0 1 3 
1 2 4 
>>> df_bytes = cPickle.dumps(df) 

Отправить содержание df_bytes каким-то образом, то десериализации:

>>> df2 = cPickle.loads(df_bytes) 
>>> df2 
    A B 
0 1 3 
1 2 4 

Эти два модуля действительно ввести потенциальные проблемы безопасности, поскольку они позволяют выполнить произвольный код во время десериализации. Лучшим решением было бы написать dataframe в строку JSON:

df_string = df.to_json() 

И восстановить его потом:

df_again = pandas.read_json(df_string) 

Другие форматы, такие как csv также доступны, соответствующие функции DataFrame.to_csv() и pandas.read_csv(). См. this и this для получения полного списка связанных функций.

+0

Не удалось найти пакет.Плюс Я прочитал, что он не безопасен. Есть и другие предложения? –

+0

Эти два модуля находятся в стандартной библиотеке. Поэтому дополнительный пакет не требуется. Просто «import pickle» или 'import cPickle' будет делать. Я отредактировал сообщение, чтобы добавить методы преобразования в строковые форматы и из них, что должно быть более безопасным. –

+0

Спасибо человек. Я пытался с pickle.It работает. На данный момент безопасность не так уж и важна. Теперь мы будем использовать рассол. Попробуем json позже. –

Смежные вопросы