所以我有一个数据框,其中一列主要由字符串组成。但偶尔会有一个浮子。我需要过滤列,所以我只得到字符串。我尝试通过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
答案 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'])