如何在不转换字符串的情况下筛选Pandas Series中等于指定numpy数组的元素?
筛选Series中特定numpy数组元素的方法
要筛选出Series s中与np.array(['x'])完全相等的元素,可以借助np.array_equal()函数实现——该函数会严格比较数组的形状和元素内容,无需将数组转换为字符串。
方法一:使用apply结合np.array_equal
import numpy as np import pandas as pd data = [ np.array(['x'], dtype='object'), np.array(['y'], dtype='object'), np.array(['z'], dtype='object'), np.array(['x', 'z', 'y'], dtype='object'), np.array(['y', 'x'], dtype='object'), ] s = pd.Series(data) c = np.array(['x']) # 生成布尔索引并筛选目标元素 result = s[s.apply(lambda arr: np.array_equal(arr, c))]
方法二:列表推导式生成掩码
如果觉得apply不够直观,也可以用列表推导式先构建布尔掩码:
mask = [np.array_equal(arr, c) for arr in s] result = s[mask]
两种方法都能准确匹配到目标数组,且不受元素是单元素还是多元素数组的影响。
内容的提问来源于stack exchange,提问作者MaxPowers
相关产品推荐
相关产品推荐

