我有一个这样的数据帧(列不是并排的(:
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_'))