【问题标题】:Replacing strings (categories) in a single column that consists of integers, floats and categorical strings - Pandas替换由整数、浮点数和分类字符串组成的单列中的字符串(类别) - Pandas
【发布时间】:2018-10-24 19:55:02
【问题描述】:

我有一个 Pandas 列,其中主要包含整数、一些浮点数和一些字符串,如“是”、“否”和一些其他字符串。我可以用什么替换这些字符串?由于该列不是完全分类的,因此我无法进行一般的热编码或类似操作。这种情况下的最佳做法是什么?

更新: 由于某种原因,此列的外观并不明显,因此这里是一个示例:

column_name
   1000
    45
    3.0
    yes
    no
    340.0
     p
     k
     4
     .
     .
     .

数据是完全组成的,我唯一需要知道在列中处理此类字符串的最佳实践是什么。

【问题讨论】:

  • 如果您能提供更多上下文,将会很有帮助!你想做什么?它是什么样的数据?您能否提供数据的示例/视图?
  • 这个问题再清楚不过了,但我添加了一个更新。
  • 你想用这个实现什么?如果你愿意,你可以将字符串转换为数字,如果这有意义的话,比如“是”可以是 1,“否”是 0,但显然这不是熊猫问题,而是数据问题:字符串是什么意思?你想对输出做什么?如果您说的是 NLP 类型的东西,那么您需要使用 Word2Vec 之类的东西将字符串编码为向量。对于像“是/否”这样的简单字符串映射,二进制映射 1/0 听起来非常好。对于其他字符串,好吧,如果没有上下文的含义,很难提供帮助。
  • 我提出的get_dummies函数是一种通用的方法,可以将分类数据转换为用于ML类型任务的数字。

标签: python-3.x pandas data-science


【解决方案1】:

要映射分类数据,您需要使用

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html

示例:

import pandas as pd
df = pd.DataFrame({'A':[1,2,3,4], 'B': ['a', 'b', 'c', 'd'], 'C': [1,'e', 'f', 3]})

# all strings:
pd.get_dummies(df['B'])

    a   b   c   d
0   1   0   0   0
1   0   1   0   0
2   0   0   1   0
3   0   0   0   1

# mixed types:
pd.get_dummies(df['C'])


    1   3   e   f
0   1   0   0   0
1   0   0   1   0
2   0   0   0   1
3   0   1   0   0

【讨论】:

  • 是的,当列只是分类但不是当它混合了整数和字符串值时?如果我想在字符串上做 get_dummies,不知道该怎么做或者是否可能。
  • 只在该列上得到假人。合并到您的 df 中,并删除原始的 colmn
  • 但是在那种情况下,所有的数字也会被转换成假人吗?我不想转换数字,只转换字符串。
  • 如果同一列中有数字和字符串,那么该列中的数字也是字符串。 dtype 用于整个列。如果您有带参数的列和带数字的列,请仅在字符串列上应用 get_dummies。
  • 这意味着在这种情况下我不能使用 get_dummies 我猜因为整个列都是对象。我应该用不同的数字手动替换字符串,还是在这种情况下我还能做些什么?
猜你喜欢
  • 2021-12-22
  • 2019-02-02
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多