熊猫:如何合并到多列的数据框?

时间:2018-11-15 11:18:29

标签: python pandas dataframe

我有2个数据帧,df1df2

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

2 个答案:

答案 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