无法按长度过滤元素为列表的Pandas Series
解决方法
你的问题出在没有对Series的每个元素单独判断长度,而是误把整个Series的长度当成判断条件了,导致生成的不是布尔索引数组,所以触发KeyError。
给你两种简单的解决方式:
方法1:用apply判断每个列表的长度
直接对Series里的每个元素(也就是每个列表)应用长度判断,生成布尔索引:
film_filtered2 = ratings_series[ratings_series.apply(lambda x: len(x) > 0)]
方法2:利用空列表的布尔特性
空列表在布尔判断中会被视为False,非空列表是True,所以可以直接转成布尔类型过滤:
film_filtered2 = ratings_series[ratings_series.astype(bool)]
如果想用loc的话,只要把判断逻辑改成针对每个元素就行:
film_filtered2 = ratings_series.loc[ratings_series.apply(lambda x: len(x) > 0)]
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

