首页 > 解决方案 > 在 Python 3 中清理数据框

问题描述

我有一个数据框(haveleft),里面装满了离开服务的人以及他们离开的原因。'text' 列是他们的原因,但其中一些不是字符串。不多,所以我只想删除这些行,无论是就地还是新的数据框。下面的代码只是给了我一个只填充了 NaN 的数据框。为什么它不起作用?

cleanedleft = pd.DataFrame()
cleanedleft = haveleft[haveleft[haveleft['text'] == str]]
print(holder[0:10])

或者如果我删除“haveleft []”之一,我会得到一个空数据框

cleanedleft = pd.DataFrame()
cleanedleft = haveleft[haveleft['text'] == str]
print(holder[0:10])

我试图添加一个 type() 但似乎无法弄清楚如何做到这一点。

标签: pythonpandas

解决方案


它不起作用,因为 DataFrame 列不能包含混合类型;text即使某些值是数字,您的列也将是字符串或对象。您需要弄清楚如何表征不需要的数据并相应地删除它们。

例如,要删除“文本”仅包含数字的行,如您给出的单行示例:

cleaned = df[~df['text'].str.match('^\d+$')]

推荐阅读