如何清除Pandas中数字列中的文本数据类型?

时间:2019-07-28 06:47:39

标签: sklearn-pandas

我有一个包含数字数据列的数据集,其中包含一些文本。

例如,假设我有一列数字从1到10,但在文本中却以“十”代替了10。

我试图在列上使用unique()方法来识别不一致的数据并清除它们。

当前数据集很小,因此我可以摆脱它。但是,如果数据集很大,那么使用我的方法将非常困难。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

编程语言没有固有的概念,即某些字符串对应于某些数字,因此您必须以编程方式解析每个字符串并确定相应的数字。

对于这部分,我能找到的最佳答案是:Is there a way to convert number words to Integers? —但是,如果您有少量离散的可能值,则数据可以采用1到10(含1到10)的值,创建一个dict并手动创建字符串到数字的一对一映射。这不是最漂亮的方法,但是会起作用。请注意,这不是可扩展的解决方案,因为可能的值范围会增加。

有了映射字典后,我们将其称为str_to_int_dict,,您只需执行以下操作即可:

df[column_name] = df[column_name].apply(lambda x: str_to_int_dict[x])

现在,这假设您的字符串格式一致:即10始终对应于“十”,而不是“十”,“十”,“ tEN”,“ tEn”等的某种混合形式。如果您有这种折衷的组合,最好换成.apply(lambda x: str_to_int_dict[x.lower().strip()]的链接(或者更高,这与一致性有关)。