我有两个数据帧
id initials
0 100 J
1 200 S
2 300 Y
name initials
0 John J
1 Smith S
2 Nathan N
我想比较(
df
和df2
中的initials
列中的值,并复制其首字母与第一个数据帧(df
中的首字母匹配的名称(在df2
中)import pandas as pd
for i in df.initials:
for j in df2.initials:
if i == j:
# copy the name value of this particular initial to df
输出应如下:
id name
0 100 Johon
1 200 Smith
2 300
你知道怎么解决这个问题吗?
最佳答案
怎么样?:
df3 = df.merge(df2,on='initials',
how='outer').drop(['initials'],axis=1).dropna(subset=['id'])
>>> df3
id name
0 100.0 John
1 200.0 Smith
2 300.0 NaN
因此“initials”列将被删除,“id”列中的
np.nan
也将被删除。如果你不想让
np.nan
在那里附加一个.fillna()
:df3 = df.merge(df2,on='initials',
how='outer').drop(['initials'],axis=1).dropna(subset=['id']).fillna('')
>>> df3
id name
0 100.0 John
1 200.0 Smith
2 300.0