我有一个 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]
