像Vlookup这样的部分字符串匹配python

时间:2020-01-29 14:38:24

标签: python pandas vlookup partial

我有以下数据框:

import pandas as pd    
pd.DataFrame(first_list).set_index(0).groupby(df.index).apply(lambda x: x.values.tolist()).tolist()
#-> 
[[[45.4, 9.1]],
 [[45.5, 9.1], [45.4, 9.2], [45.4, 9.2]],
 [[45.4, 9.1], [45.4, 9.1], [45.4, 9.1]]]

我想创建一个新的数据框(df3),根据发票将两者合并。问题在于,发票编号在df2 ['Ref']中并不总是“完全匹配”,而有时却是“部分匹配”。因此,“发票”上的联接不会提供所需的输出,因为它不会复制发票数据。

我尝试了以下代码:

    df1 = pd.DataFrame({'Invoice': ['3 HongKong', 'A Africa', 'A GhanaLimited', 'AfricaGroup'],
                        'Currency': ['EUR', 'EUR', 'EUR', 'USD']})

    df2 = pd.DataFrame({'Ref': ['3 Hong', 'A Africa', 'A Ghana', 'Africa Group'],
                        'Type': ['01', '03', '04', '02'],
                        'Amount': ['Live', 'No', 'Live', 'No'],
                        'Comment': ['bla', 'bla', 'bla', 'bla']})

    print(df1)
    print(df2)

              Invoice Currency
    0      3 HongKong      EUR
    1        A Africa      EUR
    2  A GhanaLimited      EUR
    3     AfricaGroup      USD
                Ref Type Amount Comment
    0        3 Hong   01   Live     bla
    1      A Africa   03     No     bla
    2       A Ghana   04   Live     bla
    3  Africa Group   02     No     bla

但这给了我错误:

IndexError:单个位置索引器超出范围

这个问题可以解决吗?

0 个答案:

没有答案