python - pandas to_numeric/to_* 如果输入是数据帧切片则引发缓冲区错误

标签 python debugging pandas

如果输入是整个数据帧,则按照我读过的方式在数据帧上应用 pandas to_numeric 或 to_datetime 函数可以正常工作,但如果输入是数据帧的多个列的一部分则不行。

我是做错了什么还是这是意外行为?

考虑:

import pandas as pd
import numpy as np

test_df = pd.DataFrame(np.random.randn(50,5))
print(test_df.iloc[:25,2:4])
pd.to_numeric(test_df.iloc[:25, 2:4])

产生错误

ValueError:缓冲区的维数错误(预期为 1,得到 2)

我在 Python 3.4.3 的 Anaconda 堆栈 (2.4) 上运行 pandas v17.0.0。

通过在数据框 iloc 选择上应用来运行 to_numeric,即

test_df.iloc[:25, 2:4].apply(pd.to_numeric)

工作正常。

上面的这种行为,即在数据帧的切片上,是故意的吗? 谢谢!

最佳答案

这也不适用于完整的数据帧(pd.to_numeric(test_df) 将给出相同的错误)作为 to_datetimeto_numeric函数仅设计用于处理一维数据(系列、一维数组、列表)。查看docstring .

因此,如果您想同时在多个列上使用此函数,您使用 apply 的方法是正确的。

关于python - pandas to_numeric/to_* 如果输入是数据帧切片则引发缓冲区错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33735874/

相关文章:

python - 如何在 python 中解析字符串?

python - 获取 Python 类中的变量类型

node.js - ng start - 未知选项 : '--inspect-brk'

debugging - 是否可以在 Haskell 函数中 Debug模式匹配?

python - worker 完成后不会发出 QThread.finished 信号

debugging - 如何调试 Ansible 包含和依赖项?

python - 从 pandas 中的虚拟变量重建分类变量

python pandas datetime datetime 不能正常工作

python - 如何根据另一列的特定值从一列中删除 NaN

python - 在 Python 中将字符串转换为日期时间