在pandas中查找具有不同列名的值

时间:2016-06-18 08:13:41

标签: python dictionary pandas dataframe

我有2个pandas数据帧df1df2

Name   No
A      1
A      2
B      5

Player Gender
A      F
B      M
C      F

我想在sex数据框中使用df1gender列中的相应值创建新列df2。用于查找的列在Name中为df1,在Player中为df2

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

df2使用map Playerset_index位置{/ 3}}:

df1['sex'] = df1.Name.map(df2.set_index('Player')['Gender'])
print (df1)
  Name  No sex
0    A   1   F
1    A   2   F
2    B   5   M

这与map的{​​{1}}相同:

dict

或者:

d = df2.set_index('Player')['Gender'].to_dict()
print (d)
{'A': 'F', 'B': 'M', 'C': 'F'}
df1['sex'] = df1.Name.map(d)
print (df1)
  Name  No sex
0    A   1   F
1    A   2   F
2    B   5   M

首先更快:

print (pd.merge(df1,df2, left_on='Name', right_on='Player')
         .rename(columns={'Gender':'sex'})
         .drop('Player', axis=1))

  Name  No sex
0    A   1   F
1    A   2   F
2    B   5   M