将几个数据帧列与列表进行比较



我有一个这样的数据帧(列不是并排的(:

Num A Num B Num C Marked
0  213   314   512
1  612   516   713
2  613   678   125
3  163   813   312

list = [612,813,512,713]这样的列表

现在,如果数据帧中存在列表中的值,我想进行比较,并将其标记为1,否则标记为0,这样输出为:

Num A Num B Num C Marked
0  213   314   512      1
1  612   516   713      1
2  613   678   125      0
3  163   813   312      1

我只发现了一个专栏如何做到这一点:

import pandas as pd
import numpy as np
path = "path"
wb = pd.ExcelFile(path)
df = wb.parse("Sheet1")
list = [612,813,512,713]
df['Marked'] = df.Num_A.isin.(list).astype(int) 

如何将其考虑到所有列?

提前感谢!

您可以使用np.isin方法检查lst中的数字是否沿列存在于df中,然后将其转换为整数值:

df['Marked'] = np.isin(df.values,lst).any(axis=1).astype(int)

生成一个2。df,在那里使用isin,为第二个数据帧的列添加前缀,然后将它们连接在一起:

lst = [612,813,512,713]
df.join(df.isin(lst).add_prefix('Marked_'))

最新更新