对列执行内部合并时保留第一个数据帧的索引

2024-05-23 21:30:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧

ClientFileDf:

            Date Clearing Member PAN Trading Member PAN     CPCode       CPPAN   ClientPAN
0  1/10/2021          AAACS0581R         AAACS0581R        NaN         NaN         NaN
1  1/10/2021          AAACS0581R         AAACS0581R  NCDXAGR02  AACCG5797M  AACPB3698K
2  1/10/2021          AAACS0581R         AADCP2756J        NaN         NaN         NaN
3  1/10/2021          AAACS0581R         AAACS0581R  NCDXAGR04  AACCG5797S  AACPB3698K
4  1/10/2021          AAACS0581R         AAACS0581R  NCDXAGR06  AACCG5797M         NaN

df_CPCodeDF:

  HEDGE_CP_CODE HEDGE_PAN_NO
0     NCDXAGR02   AACCG5797M
1     NCDXAGR04   AACCG5797S

当我对列进行内部合并时,我得到的结果数据框如下,索引0和1

            Date Clearing Member PAN Trading Member PAN     CPCode       CPPAN   ClientPAN
0  1/10/2021          AAACS0581R         AAACS0581R  NCDXAGR02  AACCG5797M  AACPB3698K
1  1/10/2021          AAACS0581R         AAACS0581R  NCDXAGR04  AACCG5797S  AACPB3698K

而我需要的是索引分别为1和3,与第一个数据帧相同

Required Df:

        Date Clearing Member PAN Trading Member PAN     CPCode       CPPAN   ClientPAN
1  1/10/2021          AAACS0581R         AAACS0581R  NCDXAGR02  AACCG5797M  AACPB3698K
3  1/10/2021          AAACS0581R         AAACS0581R  NCDXAGR04  AACCG5797S  AACPB3698K

我知道索引在与列合并时被忽略,但是否有解决方法或我缺少的东西

我的代码:

df2 = pd.merge(ClientFileDf, df_CPCodeDF,  how='inner', left_on=['CPCode','CPPAN'], right_on = ['HEDGE_CP_CODE','HEDGE_PAN_NO'])
df2.drop(['HEDGE_CP_CODE','HEDGE_PAN_NO'],axis=1, inplace=True)
print(df2)

Tags: 数据datenanpanmemberclearinghedgeaaccg5797s
1条回答
网友
1楼 · 发布于 2024-05-23 21:30:05

使用reset_index()保留ClientFileDf的索引,然后设置该索引:

df2 = pd.merge(ClientFileDf.reset_index(), df_CPCodeDF,  how='inner', \
left_on=['CPCode','CPPAN'], \
right_on = ['HEDGE_CP_CODE','HEDGE_PAN_NO']).set_index('index')

相关问题 更多 >