【发布时间】:2014-08-14 10:40:27
【问题描述】:
我已经下载了“用于数据分析的 Python”一书中提到的文件,并且正在浏览第 278 页中提到的示例 FEC 数据库。运行命令时出现以下类型错误。我的版本:Python 3.4;熊猫:0.14.0。操作系统:Windows 8
>>> fec=pd.read_csv('c:\python\P00000001-ALL.csv')
>>> (fec.contb_receipt_amt > 0).value_counts()
>>> TypeError: unorderable types: str() > int()
但这不仅仅是这个数据集。我正在使用的任何数据集都有类似的问题。 Int(Number) 数据类型被导入为像其他任何对象一样的对象,并且当对它们运行与 numbers(>0) 的任何比较时,我得到上述错误。解决方法是什么?我尝试使用 dtype 选项导入,这会引发错误,提示 int64 或 Float64 不可用。我确信有正确的做法。如何加载具有正确数据类型的数据框。
感谢任何帮助。
【问题讨论】:
-
好吧,您已经推断出将字符串与 int 进行比较是行不通的,它应该从对
read_csv的调用中推断出 dtypes,这有点奇怪,如果您转换类型:fec.contb_receipt_amt = fec.contb_receipt_amt.astype(np.float64)那么它工作吗 -
我注意到您没有转义路径中的斜杠,这是否正确加载?试试
fec=pd.read_csv(r'c:\python\P00000001-ALL.csv') -
我刚刚针对 github 存储库测试了你的代码:github.com/pydata/pydata-book/tree/master/ch09,它运行良好,所以我不知道你的问题是什么,你能发布一个指向你的数据的链接,以便我看看
-
@EdChum Goot 点,但不应该有任何区别,因为
\p和\P都不是有效的转义序列,因此将按原样处理。 -
Ed 和团队,非常感谢您的回复。我第一次加载时最初收到以下错误。 “DtypeWarning:列 (6,11,12) 具有混合类型。在导入时指定 dtype 选项或设置 low_memory=False。”但我忽略了,因为我的金额列是第 9 列,而警告是关于其他列的。我按照建议执行了以下命令 >>> fec.contb_receipt_amt = fec.contb_receipt_amt.astype(np.float64) 并出现以下错误.. ValueError: could not convert string to float: '28-JUN-12'跨度>