将excel列中的数据插入到另一个excel列中,方法是使用pandas从列中的数据进行匹配

将excel列中的数据插入到另一个excel列中,方法是使用pandas从列中的数据进行匹配,excel,python-3.x,pandas,Excel,Python 3.x,Pandas,我在匹配数据并将数据从excel插入另一个excel时遇到此问题。 例如我会举个例子来理解它 这是我将插入数据的第一个excel svc_no MDF aline Result 27544381 DUMMY DUMMY 27927915 DUMMY DUMMY 29587987 DUMMY DUMMY 27955419 DUMMY DUMMY 29579727 DUMMY DUMMY 27955814 DUMMY D

我在匹配数据并将数据从excel插入另一个excel时遇到此问题。 例如我会举个例子来理解它

这是我将插入数据的第一个excel

svc_no      MDF     aline  Result
27544381    DUMMY   DUMMY
27927915    DUMMY   DUMMY
29587987    DUMMY   DUMMY
27955419    DUMMY   DUMMY
29579727    DUMMY   DUMMY
27955814    DUMMY   DUMMY
27930118    DUMMY   DUMMY
27927993    DUMMY   DUMMY
27957853    DUMMY   DUMMY
27547031    DUMMY   DUMMY
29574718    DUMMY   DUMMY
27544398    DUMMY   DUMMY
1002358255  DUMMY   DUMMY
1002352871  DUMMY   DUMMY
22133310    DUMMY   DUMMY
这第二个,是我将获得数据的地方,我将把数据放入结果列

SOURCE

1002358255
27544381
1002352871
27955419
27927915
27927993
27955814
29579727
22133310
27957853
27547031
27930118
29587987
27544398
29574718
输出应为,
SOURCE
列的数据应在
Result
列中,但应与
svc\u no
列匹配。像这样

svc_no      MDF     aline  Result
27544381    DUMMY   DUMMY  27544381
27927915    DUMMY   DUMMY  27927915
29587987    DUMMY   DUMMY  29587987
27955419    DUMMY   DUMMY  27955419
29579727    DUMMY   DUMMY  29579727
27955814    DUMMY   DUMMY  27955814
27930118    DUMMY   DUMMY  27930118
27927993    DUMMY   DUMMY  27927993
27957853    DUMMY   DUMMY  27957853
27547031    DUMMY   DUMMY  27547031
29574718    DUMMY   DUMMY  29574718
27544398    DUMMY   DUMMY  27544398
1002358255  DUMMY   DUMMY  1002358255
1002352871  DUMMY   DUMMY  1002352871
22133310    DUMMY   DUMMY  22133310
我尝试了以下代码:

import pandas as pd

df1 = pd.read_excel('fortesting.xlsx')

name = df1.columns.values

df2 = pd.read_excel('test.xlsx')


list1 = df1['svc_no'].tolist()
list2 = df2['Source'].tolist()


for line in list1:
    if line in list2:
        df1['Result'] = line

df1.to_excel('output.xlsx')
它插入数据,但只为整列获取一个数字

我认为需要使用以下过滤器:

或使用默认的内部联接:

df1 = pd.read_excel('fortesting.xlsx')
df2 = pd.read_excel('test.xlsx')

df3 = df1.merge(df2, left_on='svc_no', right_on='Source').rename(columns={'Source':'Result'})

df3.to_excel('output.xlsx')

df1['Result']=line
这是为for循环中的每次迭代使用单个值设置整个列,因此您需要找到索引,然后像这样更新它

for line in list1:
   if line in list2:
      idx = list1.index(line)
      df1['Result'][idx] = line

如果在您的案例中进行合并,它将不会被正确索引,结果标题也将有两列

您太棒了!!这对我有用!!非常感谢你@甘索帕鲁米-很高兴能帮上忙!相反,在熊猫中,最好避免循环,因为速度慢。同意,但只是指出发生了什么,以及如何用相同的方法纠正它
for line in list1:
   if line in list2:
      idx = list1.index(line)
      df1['Result'][idx] = line