Skip to main content
 首页 » 编程设计

python之使用嵌套数组过滤 Pandas DataFrame

2025年05月04日12jackei

我有一个 pandas 数据框,它的某些列中包含数组。我想过滤数据框以仅包含在该列的嵌套数组中找到特定值的行。

例如,我有一个类似这样的数据框:

label MODEL_INDEX ARRAY_VAL 
ID 
0    4   (11.0,  0.0)    
1   65   (11.0, 10.0)    
2   73   (11.0, 10.0)    
3   74   (10.0,  0.0)    
4   79   (11.0,  0.0)    
5   80   (10.0,  0.0)    
6   88   (11.0,  0.0)  

我想过滤数据帧,只包含那些满足某些可变条件的数据,比如包含 10.0,在 ARRAY_VAL 下的数组中得到这个:

label MODEL_INDEX ARRAY_VAL 
ID   
1   65   (11.0, 10.0)    
2   73   (11.0, 10.0)    
3   74   (10.0,  0.0)     
5   80   (10.0,  0.0)  

本质上,寻找类似的东西:

df[df['ARRAY_VAL'] where 10.0 in df['ARRAY_VAL]] 

请您参考如下方法:

您可以使用.apply 在数据框的每一行中搜索列表:

# creating the dataframe 
df = pd.DataFrame(columns = ['model_idx','array_val']) 
df.model_idx = [4,65,73,74,79,80,88] 
df.array_val = [[11,0], 
                [11,10], 
                [11,10], 
                [10,0], 
                [11,0], 
                [10,0], 
                [11,0]] 
 
# results is a boolean indicating whether the value is found in the list 
results = df.array_val.apply(lambda a: 10 in a) 
 
# filter the dataframe based on the boolean indicator 
df_final = df[results] 

过滤后的数据框为:

In [41]: df_final.head() 
Out[41]:  
   model_idx array_val 
1         65  [11, 10] 
2         73  [11, 10] 
3         74   [10, 0] 
5         80   [10, 0]