删除不同类型的行

时间:2014-02-24 13:20:41

标签: python filter pandas

所以我有一个数据框,其中一列主要由字符串组成。但偶尔会有一个浮子。我需要过滤列,所以我只得到字符串。我尝试通过D-type将列转换为字符串,但没有运气。我现在正尝试通过以下方式进行过滤:

companies['variants'] = companies['variants'].filter(lambda x: isinstance(x,str))

但这会产生错误:

    return self.reindex(**{axis_name: [r for r in items
TypeError: 'function' object is not iterable

3 个答案:

答案 0 :(得分:2)

我认为你应该这样做:

companies['variants'] = filter(lambda x: isinstance(x,str), companies['variants'])

它应该删除所有不是str实例的元素(当然,如果公司['variants']包含list或tuple)。

如果要将每个元素转换为字符串,可以执行下一步:

companies['variants'] = map(lambda x: str(x), companies['variants'])

答案 1 :(得分:1)

生成字符串类型的掩码:

mask = companies.apply(lambda x: isinstance(x.variants, np.str), axis =1 )

现在过滤非字符串:

companies = companies[mask]

您也可以这样做将所有数据转换为字符串:

companies['variants'] = companies['variants'].astype(np.str)

答案 2 :(得分:0)

我认为你不想要一个lambda,为什么不强迫价值?

companies['variants'] = str(companies['variants'])