熊猫数据框基于另一个包含名称列的文件创建一个新的二进制活动列

时间:2018-09-21 08:49:57

标签: python pandas dataframe

                  LigandName    Score
0   _017_model1/_017_model1     -10.54
1   _010_model1/_010_model1     -9.49
2   _113_model1/_113_model1     -9.40
3   _009_model1/_009_model1     -9.37
4   _193_model1/_193_model1     -9.36

这是数据框的前几行。我想添加一个称为IsActive的新列,该列基于该文件中LigandName的存在。这是文件

0   _017_model1/_017_model1
1   _010_model1/_010_model1
2   _113_model1/_113_model1
3   _009_model1/_009_model1
4   _004_model1/_004_model1

如果存在LigandName,则IsActive条目应为1,否则为0。我该怎么办?

1 个答案:

答案 0 :(得分:1)

通过Series.isin创建布尔型掩码并将其转换为整数-True1,而False0

print (df1)
                LigandName
0  _017_model1/_017_model1
1  _010_model1/_010_model1
2  _113_model1/_113_model1
3  _009_model1/_009_model1
4  _004_model1/_004_model1

df['IsActive'] = df['LigandName'].isin(df1['LigandName']).astype(int)
print (df)
                LigandName  Score  IsActive
0  _017_model1/_017_model1 -10.54         1
1  _010_model1/_010_model1  -9.49         1
2  _113_model1/_113_model1  -9.40         1
3  _009_model1/_009_model1  -9.37         1
4  _193_model1/_193_model1  -9.36         0