我正在尝试使用np.where函数生成一个新的df列。具体来说,我想根据行中的标识符是否在不同数据框中的标识符列表中生成一个二进制变量。请参见下面的功能。
这似乎是一个简单的功能-有人知道为什么它不起作用吗?谢谢您的帮助。
df2['ETF-Heavy?']=np.where(df2['ID'] in df1['ID'], 1,0)
答案 0 :(得分:2)
尝试使用.isin
例如:
import pandas as pd
import numpy as np
df1 = pd.DataFrame({"ID": [1,2,3]})
df2 = pd.DataFrame({"ID": [1,21,31]})
df2['ETF-Heavy?'] = np.where(df2['ID'].isin(df1['ID']) , 1,0)
print(df2)
输出:
ID ETF-Heavy?
0 1 1
1 21 0
2 31 0