我有2个pandas数据帧df1
和df2
Name No
A 1
A 2
B 5
Player Gender
A F
B M
C F
我想在sex
数据框中使用df1
中gender
列中的相应值创建新列df2
。用于查找的列在Name
中为df1
,在Player
中为df2
。
非常感谢任何帮助
答案 0 :(得分:1)
df2
使用map
Player
列set_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