我有2个数据帧,df1
和df2
。
df1
包含人与人之间某些互动的信息。
df1
Name1 Name2
0 Jack John
1 Sarah Jack
2 Sarah Eva
3 Eva Tom
4 Eva John
df2
包含一般人以及df1
中某些人的身份
df2
Name Y
0 Jack 0
1 John 1
2 Sarah 0
3 Tom 1
4 Laura 0
我只希望df2
用于df1
中的人(劳拉消失),而对于不在df2
中的人,请NaN
(即伊娃)例如:
df2
Name Y
0 Jack 0
1 John 1
2 Sarah 0
3 Tom 1
4 Eva NaN
答案 0 :(得分:2)
在df1
的唯一值上创建一个DataFrame
,并用df2
将其map
设置为:
df = pd.DataFrame(np.unique(df1.values),columns=['Name'])
df['Y'] = df.Name.map(df2.set_index('Name')['Y'])
print(df)
Name Y
0 Eva NaN
1 Jack 0.0
2 John 1.0
3 Sarah 0.0
4 Tom 1.0
注意::订单未保留。
答案 1 :(得分:0)
您可以在df1中创建一个唯一名称列表,并使用isin
names = np.unique(df1[['Name1', 'Name2']].values.ravel())
df2.loc[~df2['Name'].isin(names), 'Y'] = np.nan
Name Y
0 Jack 0.0
1 John 1.0
2 Sarah 0.0
3 Tom 1.0
4 Laura NaN