pandas实现Excel vlookup功能

pandas实现Excel vlookup功能

import numpy as np
import pandas as pd
file = r'data\loan_grade.xlsx'
loan_stats = pd.read_excel(file, sheet_name='loan_stats')
loan_stats
idmember_idloan_amnttermint_rate
010775011296599500036 months0.1065
110771751313524240036 months0.1596
210753581311748300060 months0.1269
310752691311441500036 months0.0790
410720531288686300036 months0.1864
510717951306957560060 months0.2128
member_grade = pd.read_excel(file, sheet_name='member_grade')
member_grade
member_idgrade
01296599B
11313524C
21277178C
31311441A
41304742C
51306957F
  • merge()

    默认的merge方法是inner
pd.merge(loan_stats, member_grade, how='inner')
idmember_idloan_amnttermint_rategrade
010775011296599500036 months0.1065B
110771751313524240036 months0.1596C
210752691311441500036 months0.0790A
310717951306957560060 months0.2128F

inner起到的效果如下,只得到两个数据集交集部分。

pd.merge(loan_stats, member_grade, how='left')
idmember_idloan_amnttermint_rategrade
010775011296599500036 months0.1065B
110771751313524240036 months0.1596C
210753581311748300060 months0.1269NaN
310752691311441500036 months0.0790A
410720531288686300036 months0.1864NaN
510717951306957560060 months0.2128F

left 效果如下,right填充left, 缺失部分NaN填充:

pd.merge(loan_stats, member_grade, how='right')
idmember_idloan_amnttermint_rategrade
01077501.012965995000.036 months0.1065B
11077175.013135242400.036 months0.1596C
21075269.013114415000.036 months0.0790A
31071795.013069575600.060 months0.2128F
4NaN1277178NaNNaNNaNC
5NaN1304742NaNNaNNaNC

right效果如下, left填充right,缺失的用NaN填充:

pd.merge(loan_stats, member_grade, how='outer')
idmember_idloan_amnttermint_rategrade
01077501.012965995000.036 months0.1065B
11077175.013135242400.036 months0.1596C
21075358.013117483000.060 months0.1269NaN
31075269.013114415000.036 months0.0790A
41072053.012886863000.036 months0.1864NaN
51071795.013069575600.060 months0.2128F
6NaN1277178NaNNaNNaNC
7NaN1304742NaNNaNNaNC

完成的是并集的聚合,原图有错,所以就不自己做了!

_map = pd.Series(member_grade.grade.values, index=member_grade.member_id)
loan_stats.member_id.map(_map)
0      B
1      C
2    NaN
3      A
4    NaN
5      F
Name: member_id, dtype: object

map只能实现left的作用,但是大多数情况适合我们使用!

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值