将excel列中的数据插入到另一个excel列中,方法是使用pandas从列中的数据进行匹配
我在匹配数据并将数据从excel插入另一个excel时遇到此问题。 例如我会举个例子来理解它 这是我将插入数据的第一个excel将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
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