2024-05-19 10:28:11 发布
网友
我有两个熊猫数据帧如下。
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
可以使用^{}在ISIN上自动执行内部联接。下面这一行代码应该可以让您继续:
ISIN
df3 = pd.merge(df1, df2)[['Security', 'Value']]
结果是df3:
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)
您可以使用^{},默认情况下是内部联接,因此how=inner是省略的,如果两个Dataframes中只有一个公共列,则还可以省略参数on='ISIN':
how=inner
Dataframes
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
或者^{}列ISIN通过Series从df1:
Series
df1
print (df1.set_index('ISIN')['Security']) ISIN I1 ABC I2 DEF I3 JHK I4 LMN I5 OPQ Name: Security, dtype: object #create new df by copy of df2 df3 = df2.copy() df3['Security'] = df3.ISIN.map(df1.set_index('ISIN')['Security']) #remove column ISIN df3.drop('ISIN', axis=1, inplace=True) #change order of columns df3 = df3[['Security','Value']] print (df3) Security Value 0 DEF 100 1 JHK 200 2 OPQ 300
可以使用^{} 在
ISIN
上自动执行内部联接。下面这一行代码应该可以让您继续:结果是
df3
:完全可复制的代码示例如下:
您可以使用^{} ,默认情况下是内部联接,因此
how=inner
是省略的,如果两个Dataframes
中只有一个公共列,则还可以省略参数on='ISIN'
:或者^{} 列
ISIN
通过Series
从df1
:相关问题 更多 >
编程相关推荐