我有一个标记化的文本。里面有1.2、2.3等数字 我用下面的代码删除他们,但他们不工作
train_vs['doc_text'] = train_vs['doc_text'].apply(lambda x: [c for c in x if not c.isnumeric()])
train_vs['doc_text'] = train_vs['doc_text'].apply(lambda x: [c for c in x if not c.isdigit()])
有关如何删除这些数字的帮助吗? 谢谢
答案 0 :(得分:0)
.apply
是pd.Series
和pd.DataFrame
的一种方法,您正在Series
上调用它。结果是,lambda的每个x
都是数据框中的一个值。如果您在Series
的每个值中确实有一个标记化列表,那么我不确定那是理想的选择。
无论如何,isdigit
和isnumeric
都无法检查是否有浮点数。一个愚蠢的解决方法可能看起来像:
df = pd.DataFrame(
{
'smple':[
["12.34", "atrium"],
["12.34", "atrium"],["election", "foible"],
['USA', "2131244213213"]
]
}
)
df.smple.apply(
lambda x: [c for c in x if not (c.isnumeric() or c.replace('.','',1).isdigit())]
)
我认为,这本thread对您的阅读很有帮助。