python用merge匹配和左连接,Pandas Merge(pd.Merge)如何设置索引和连接

重置索引,然后合并多个(列-)键:dfLeft.reset_index(inplace=True)

dfRight.reset_index(inplace=True)

dfMerged = pd.merge(dfLeft, dfRight,

left_on=['date', 'cusip'],

right_on=['date', 'idc__id'],

how='inner')

然后可以将“日期”重置为索引:dfMerged.set_index('date', inplace=True)

下面是一个示例:raw1 = '''

2012-01-03 XXXX 4.5

2012-01-03 YYYY 6.2

2012-01-04 XXXX 4.7

2012-01-04 YYYY 6.1

'''

raw2 = '''

2012-01-03 XYXX 45.

2012-01-03 YYYY 62.

2012-01-04 XXXX -47.

2012-01-05 YYYY 61.

'''

import pandas as pd

from StringIO import StringIO

df1 = pd.read_table(StringIO(raw1), header=None,

delim_whitespace=True, parse_dates=[0], skiprows=1)

df2 = pd.read_table(StringIO(raw2), header=None,

delim_whitespace=True, parse_dates=[0], skiprows=1)

df1.columns = ['date', 'cusip', 'factorL']

df2.columns = ['date', 'idc__id', 'factorL']

print pd.merge(df1, df2,

left_on=['date', 'cusip'],

right_on=['date', 'idc__id'],

how='inner')

它给予date cusip factorL_x idc__id factorL_y

0 2012-01-03 00:00:00 YYYY 6.2 YYYY 62

1 2012-01-04 00:00:00 XXXX 4.7 XXXX -47

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值