数据在合并后可以复制

8aqjt8rx  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(382)

我是python新手,我正在尝试使用pandas(在中可以使用vba,但需要相当长的时间)将2张excel表格合并为1张(如excel中的vlookup函数)。然而,合并后,结果会重复,我不知道为什么。下面是我编写的代码:

import pandas as pd

df1 = pd.read_excel(r'C:\Users\hoatran\Desktop\Test data.xlsx',sheet_name='Loan')
df2 = pd.read_excel(r'C:\Users\hoatran\Desktop\Test data.xlsx',sheet_name='MD48')
results = pd.merge(df1, df2, on=['v_contract_number'],how='left')
results["d_revised_maturity_date"] = pd.to_datetime(results["d_revised_maturity_date"]).dt.strftime('%d/%m/%Y')

print(results)

输入数据为14662行,但输出数据为15338行。
您可以看到文件[here][1][1]:https://drive.google.com/drive/u/0/folders/1clabd4ejwxdbso3fxyldgf34czt316oc
请帮我查一下哪里出了错。谢谢并致以最良好的问候

hts6caw3

hts6caw31#

第一个工作表中有14662行,第二个工作表中有>20000行。在进行左合并时,如果右数据框中有多个元素具有相同的id,则会在结果数据框中多次出现。请检查示例以供参考。

df1 = pd.DataFrame({'a': ['foo', 'bar'], 'b': [1, 2]})
df2 = pd.DataFrame({'a': ['foo', 'baz','foo'], 'c': [3, 4,0]})

df1
      a  b
0   foo  1
1   bar  2
df2
      a  c
0   foo  3
1   baz  4

合并:-

df1.merge(df2, how='left', on='a')

    a    b  c
0   foo  1  3.0
1   foo  1  0.0
2   bar  2  NaN
2g32fytz

2g32fytz2#

实际上我想做如下的事情

df1 = pd.DataFrame({'v_contract_number': ['VN120001438']})
    df2 = pd.DataFrame({'v_contract_number': ['VN120001438','VN120001438','VN120001438'], 'Times': [13, 10, 8],'d_revised_maturity_date': ['2028-04-28','2028-07-29','2028-06-30']})

# df1

          v_contract_number
        0       VN120001438

# df2

  v_contract_number  Times d_revised_maturity_date
0       VN120001438     13              2028-04-28
1       VN120001438     10              2028-07-29
2       VN120001438      8              2028-06-30

results = df1.merge(df2, how='left', on='v_contract_number')
print(results)

# result

  v_contract_number  Times d_revised_maturity_date
0       VN120001438     13              2028-04-28
1       VN120001438     10              2028-07-29
2       VN120001438      8              2028-06-30

但我的预期产出如下:


# result

      v_contract_number  d_revised_maturity_date
    0       VN120001438       2028-04-28

我只想保留最大“时代”的“d_修订的_到期日”
谢谢你抽出时间。

相关问题