[英]How to convert all the memoryview columns to bytes columns in a Pandas dataframe?
我正在使用以下方法从PostgreSQL检索大量数据:
it = pandas.read_sql_table(table, DB_CONN, chunksize=1000)
但是Pandas使用PostgreSQL的psycopg2适配器, 由于历史原因 ,该适配器返回memoryview
而不是字节 。 据我所知,没有选择使psycopg2返回bytes
而不是memoryview
,因此我对此感到memoryview
。
现在,我要提供给Pandas数据帧的库是用C编写的,它不接受memoryview
并且只能处理bytes
,因此我需要一种将所有memoryview
列转换为bytes
。
我试图这样做:
dataframe[column_name].astype(bytes)
但它不适用于memoryview
> bytes
,显然:
*** ValueError: setting an array element with a sequence
我也尝试过这样的事情:
dataframe.select_dtypes(include=[memoryview]).apply(bytes)
但是它不返回任何列。
那么,有谁知道我如何拥有一种有效的方法来将任意熊猫数据帧的所有 memoryview
列转换为bytes
?
因此,显然,当我们使用memoryview时,Pandas无法识别该数据类型,而只能存储“对象”,因此我最终做了这样的事情:
def dataframe_memoryview_to_bytes(dataframe):
for col in dataframe.columns:
if type(dataframe[col][0]) == memoryview:
dataframe[col] = dataframe[col].apply(bytes)
return dataframe
这确实不是理想的,并且可能不是非常快,但是它似乎运行得很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.