【问题标题】:python - TypeError: unorderable types: str() > float()python - TypeError:不可排序的类型:str()> float()
【发布时间】:2016-05-20 12:57:09
【问题描述】:

我有一个 csv 文件并有 v3 列,但该列有一些“nan”行。 我怎么能除了行。

 dataset = pd.read_csv('mypath') 

    enc = LabelEncoder()
    enc.fit(dataset['v3'])
    print('fitting')
    dataset['v3'] = enc.transform(dataset['v3'])
    print('transforming')
    print(dataset['v3'])
    print('end')

编辑:V3 列有 A、C、B、A、C、D、、、A、S,就像那样,我想将其转换为 (1,2,3,1,2,4,, ,1,7)

【问题讨论】:

  • 你能显示你的 csv 文件内容吗?
  • 你想对这些行做什么?放下它们? (dropna) 填写 NaN 值? (fillna)
  • 不,我想将此行归类为数字。该行有字符。
  • 您可以添加数据样本吗?也许 5-6 行和所需的输出。或者更好Minimal, Complete, and Verifiable example.
  • 你的意思是pandas.factorize

标签: python python-3.x pandas machine-learning scikit-learn


【解决方案1】:

使用 ~isnull() 屏蔽 nan 值:

mask = ~dataset['v3'].isnull()
dataset['v3'][mask] = enc.fit_transform(dataset['v3'][mask])

另一种方法是使用 pandas.factorize 函数,它会自动处理 nans(分配它们 -1):

dataset['v3'] = dataset['v3'].factorize()[0]

【讨论】:

  • 非常感谢:) dataset['v3'] = dataset['v3'].factorize()[0] 解决了我的问题
猜你喜欢
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 2013-10-29
相关资源
最近更新 更多