我有2个pandas Dataframes如下。
DF1:
Security ISIN
ABC I1
DEF I2
JHK I3
LMN I4
OPQ I5
和DF2:
ISIN Value
I2 100
I3 200
I5 300
我想得到第三个数据框,如下所示:
DF3:
Security Value
DEF 100
JHK 200
OPQ 300
答案 0 :(得分:5)
您可以使用merge
,默认情况下是内部联接,因此省略how=inner
,如果Dataframes
中只有一个公共列,您也可以省略参数{{1 }}:
on='ISIN'
来自df3 = pd.merge(df1, df2)
#remove column ISIN
df3.drop('ISIN', axis=1, inplace=True)
print (df3)
Security Value
0 DEF 100
1 JHK 200
2 OPQ 300
的{{1}}的或map
列ISIN
:
Series
答案 1 :(得分:2)
您可以使用pd.merge
自动在ISIN
上进行内部联接。以下代码行可以帮助您:
df3 = pd.merge(df1, df2)[['Security', 'Value']]
结果为df3
:
Security Value
0 DEF 100
1 JHK 200
2 OPQ 300
完全可重现的代码示例如下所示:
import pandas as pd
df1 = pd.DataFrame({
'Security': ['ABC', 'DEF', 'JHK', 'LMN', 'OPQ'],
'ISIN' : ['I1', 'I2', 'I3', 'I4', 'I5']
})
df2 = pd.DataFrame({
'Value': [100, 200, 300],
'ISIN' : ['I2', 'I3', 'I5']
})
df3 = pd.merge(df1, df2)[['Security', 'Value']]
print(df3)