将DataFrame.ISIN()与系列组成的系列一起使用

时间:2018-07-12 14:13:29

标签: python pandas dataframe

我试图根据一列的值是否属于序列的一部分来过滤Dataframe的行,这样:

pack_data_clean=pack_data_clean[pack_data_clean["actual_box_barcode"].isin(ref_list)==True]

在pack_data_clean是要过滤的数据帧的地方,arual_box_barcode对该列进行检查,并用要保留在数据帧中的值来ref_list系列。

但是ref_list不是具有值的常规序列,而是由序列组成的序列,让我们来看一下:

ref_list=["BG1", "BG2", "BG3", "BG4", A1_refs, A2_refs, A3_refs, C1_refs, C2_refs, C3_refs, C4_refs, C5_refs
    , E0_refs, E1_refs, E3_refs, E4_refs, E6_refs, E7_refs, E36_refs]

其中A1_refs例如是:

A1_refs=["EEC", "ENC", "EZC"]

现在我的代码仅过滤“ BG1”,“ BG2”,“ BG3”,“ BG4”的行,但我也希望过滤“ EEC”,“ ENC”,“ EZC”等上。

您能帮助我相应地创建此过滤器吗? 谢谢, 爱德华多

1 个答案:

答案 0 :(得分:1)

如果它是常规对象和序列的列表,则需要将其转换为一致的序列格式。这可能会有所帮助:

ref_list = pd.Series(i for i in my_list if type(i) != pd.Series).append(list(j for j in my_list if type(j) == pd.Series))

如果它已经是系列系列,请在使用之前尝试展平系列,例如:

ref_list = ref_list.ravel()