我有一个包含数字数据列的数据集,其中包含一些文本。
例如,假设我有一列数字从1到10,但在文本中却以“十”代替了10。
我试图在列上使用unique()方法来识别不一致的数据并清除它们。
当前数据集很小,因此我可以摆脱它。但是,如果数据集很大,那么使用我的方法将非常困难。
有更好的方法吗?
答案 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()]
的链接(或者更高,这与一致性有关)。