Pandas 错误:缓冲区源数组为只读

Pandas 错误:缓冲区源数组为只读,pandas,cython,parquet,Pandas,Cython,Parquet,我正在尝试将拼花地板文件读入熊猫数据框。使用下面的API,或者即使我使用pd.read_拼花包装器,我也会被ValueError击中。缓冲区源数组是只读的 通过在线搜索,似乎与Cython不支持只读缓冲区有关,但我找不到任何解决方案来解决这个问题 当API抛出ValueError缓冲区源数组为只读时,如何将拼花地板文件读入数据帧 In [1]: import pandas as pd ...: import numpy as np ...: import pyarrow as pa

我正在尝试将拼花地板文件读入熊猫数据框。使用下面的API,或者即使我使用pd.read_拼花包装器,我也会被ValueError击中。缓冲区源数组是只读的

通过在线搜索,似乎与Cython不支持只读缓冲区有关,但我找不到任何解决方案来解决这个问题

当API抛出ValueError缓冲区源数组为只读时,如何将拼花地板文件读入数据帧

In [1]: import pandas as pd
   ...: import numpy as np
   ...: import pyarrow as pa
   ...: import pyarrow.parquet as pq

In [2]: table = pq.read_table('Parquet/Journal.parquet', columns=['SOURCE_CODE','YEAR','MONTH','AMOUNT'])

In [3]: df = table.to_pandas()

In [4]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 85326489 entries, 0 to 85326488
Data columns (total 4 columns):
AMOUNT         float64
SOURCE_CODE    category
YEAR           category
MONTH          category
dtypes: category(3), float64(1)
memory usage: 895.1 MB

In [5]: df.groupby(['SOURCE_CODE','YEAR','MONTH'])['AMOUNT'].sum()

这是pandas 0.23.x最新版本中的一个错误,将在pandas 0.24+中解决。此问题已由其他用户报告:并通过以下拉取请求修复:


对于sane修复,您需要等待新的pandas版本或手动安装git master。作为一种解决方法,您可以通过df['''uuuuu dummy\uuuu']=np.nan添加一个伪浮点列来解决这个问题。这将迫使pandas的BlockManager对浮动列重新排序,并应将金额转换为可写列。

这是pandas 0.23.x最新版本中的一个错误,将在pandas 0.24+中解决。此问题已由其他用户报告:并通过以下拉取请求修复:


对于sane修复,您需要等待新的pandas版本或手动安装git master。作为一种解决方法,您可以通过df['''uuuuu dummy\uuuu']=np.nan添加一个伪浮点列来解决这个问题。这将迫使pandas的BlockManager对浮点列进行重新排序,并应将AMOUNT转换为可写列。

我通过在应用groupby之前添加单个列来解决此问题

df=df.copy添加此行


df.groupby['SOURCE_CODE'、'YEAR'、'MONTH']['AMOUNT'].sum

我在应用groupby之前添加了一个

df=df.copy添加此行


df.groupby['SOURCE_CODE','YEAR','MONTH']['AMOUNT'].sum

由于我们没有您的数据,因此不容易验证行为。你能举出一个完整的例子吗?还有,你用的是哪种版本的熊猫?Cython从0.28开始支持只读内存视图,因此“最新熊猫”版本不应具有此限制,或者至少在您报告问题时可以轻松修复。我的熊猫版本为0.23.4。Cython版本是0.29.2。我是否需要将cython配置为只读内存视图?因为我们没有您的数据,所以不容易验证该行为。你能举出一个完整的例子吗?还有,你用的是哪种版本的熊猫?Cython从0.28开始支持只读内存视图,因此“最新熊猫”版本不应具有此限制,或者至少在您报告问题时可以轻松修复。我的熊猫版本为0.23.4。Cython版本是0.29.2。我需要为只读内存视图配置cython吗?这是目前唯一的解决方法吗?复制不带只读标志的数据帧是否有效?复制目前不起作用,但在接下来的2-3天内,将发布Pandas 0.24来解决此问题。这是目前唯一的解决方法吗?复制不带只读标志的数据帧是否有效?复制目前不起作用,但在接下来的2-3天内,将发布Pandas 0.24来修复此问题。