【问题标题】:Python Pandas DataFrame: unorderable types: str() > int()Python Pandas DataFrame:不可排序的类型:str() > int()
【发布时间】: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'跨度>

标签: python string pandas int


【解决方案1】:

我在一些不相同的日期收到了这个错误。我首先使用类型更改解决了它。

试试:

fec[[contb_receipt_amt]] = fec[[contb_receipt_amt]].astype(str)

然后再试一次。

【讨论】:

    猜你喜欢
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 2016-12-18
    相关资源
    最近更新 更多