gpt4 book ai didi

python - Pandas convert_to_r_dataframe 不适用于 numpy.bool_

转载 作者:行者123 更新时间:2023-11-28 18:42:37 24 4
gpt4 key购买 nike

我有一个 pandas 数据框,我想将其转换为 R 数据框以通过 rpy2 使用。 pandas 数据框的数据类型是 bool 值,特别是numpy.bool_。尝试使用 convert_to_r_dataframe 时出现 KeyError。我正在使用 Pandas 0.13.1。

我在做不该做的事?我不应该使用 numpy bool 值吗?

这是一个例子,

import pandas
import pandas.rpy.common as common
import numpy as np

# This works fine.
test_df_float = pandas.DataFrame(np.random.rand(10, 3), columns=list('xyz'))
r_test_df_float = common.convert_to_r_dataframe(test_df_float)

# This is a problem.
test_df_bool = pandas.DataFrame(np.random.rand(10, 3) > 0.5, columns=list('xyz'))
r_test_df_bool = common.convert_to_r_dataframe(test_df_bool)

KeyError Traceback (most recent call last)
<ipython-input-11-323084399e95> in <module>()
----> 1 r_test_df_bool = common.convert_to_r_dataframe(test_df_bool)

/usr/lib/python2.7/site-packages/pandas/rpy/common.pyc in convert_to_r_dataframe(df, strings_as_factors)
311 for item in value]
312
--> 313 value = VECTOR_TYPES[value_type](value)
314
315 if not strings_as_factors:

KeyError: <type 'numpy.bool_'>

最佳答案

我认为这可能是一个错误,以前是 np.bool 现在称为 np.bool_ 并且源中的两个字典缺少键文件,因此将源代码(.../site-packages/pandas/rpy/common.py 中的第 261 行)修改为以下内容即可:

VECTOR_TYPES = {np.float64: robj.FloatVector,
np.float32: robj.FloatVector,
np.float: robj.FloatVector,
np.int: robj.IntVector,
np.int32: robj.IntVector,
np.int64: robj.IntVector,
np.object_: robj.StrVector,
np.str: robj.StrVector,
np.bool: robj.BoolVector,
np.bool_: robj.BoolVector} #new key

NA_TYPES = {np.float64: robj.NA_Real,
np.float32: robj.NA_Real,
np.float: robj.NA_Real,
np.int: robj.NA_Integer,
np.int32: robj.NA_Integer,
np.int64: robj.NA_Integer,
np.object_: robj.NA_Character,
np.str: robj.NA_Character,
np.bool: robj.NA_Logical,
np.bool_: robj.NA_Logical} #new key

基本上你只需要将最后一个键添加到两个字典中。

关于python - Pandas convert_to_r_dataframe 不适用于 numpy.bool_,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24410243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com