对于Pandas数据帧中的每一行,确定列值是否存在于另一列中

时间:2015-09-16 20:39:56

标签: python pandas

我有一个像这样的pandas数据框:

df = pd.DataFrame({'category' : ['A', 'B', 'C', 'A'], 'category_pred' : [['A'], ['B','D'], ['A','B','C'], ['D']]})
print(df)

  category category_pred
0        A           [A]
1        B        [B, D]
2        C     [A, B, C]
3        A           [D]

我想有这样的输出:

  category category_pred  count
0        A           [A]      1
1        B        [B, D]      1
2        C     [A, B, C]      1
3        A           [D]      0

也就是说,对于每一行,确定'类别中的值是否为'出现在&class; class_pred'中。请注意' category_pred'可以包含多个值。

我可以像这样做一个for循环,但它真的很慢。

for i in df.index:
    if df.category[i] in df.category_pred[i]:
        df['count'][i] = 1

我正在寻找一种有效的方法来执行此操作。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用DataFrame's apply方法。

df['count'] = df.apply(lambda x: 1 if x.category in x.category_pred else 0, axis = 1)

这将根据需要添加新列