将列表/数组与数据框列进行比较?

时间:2019-09-17 18:23:52

标签: python pandas

我有一个包含值[apple,items]的列表或数组,并且我想要结果df,其中column('c')具有相同的列表/数组值。

在下面假设,例如:A可以是列表/数组/ str,结果df是基于A中的值与df'c'列进行比较

例如:

#create a feature_name to column index mapping
column_mapping = dict((name, i) for i, name, in enumerate(feature_names))

#get the submatrices
group1_column_indexes = [column_mapping[feat] for feat in group1]
group1_feature_vector_train  = feature_vector_train[:,group1_column_indexes] #all rows, but only group1 columns

group2_column_indexes = [column_mapping[feat] for feat in group2]
group2_feature_vector_train  = feature_vector_train[:,group2_column_indexes]

df

   A = [apple,items]

最终df

                        a         b        c

                0       10        13      items

                1       9         12      testcase

                2       8         11      apple

                3       7         10      apple

                4       6         9       test

                5       5         8       items

我尝试使用布尔索引,但无法成功

3 个答案:

答案 0 :(得分:0)

您应该可以使用以下方法解决此问题:

df['Status'] = df['c'].isin(A)

这应该添加一个名为Status的列,当C列的行是apple或items时为True,否则为False。

答案 1 :(得分:0)

您要使用pd.Series.isin()并将结果作为布尔掩码传递以过滤原始数据帧:

A = ['apples','items']

df_final = df[df['c'].isin(A)]

答案 2 :(得分:0)

您创建一个布尔值:

selection = df['c'].isin(A)

,然后从中获取最终的df:

Final_df = df[selection]