熊猫-Vlookup-搜索列中的值重复

时间:2019-04-08 22:49:04

标签: python excel pandas vlookup

我正在尝试模仿Pandas中的v查找(excel函数)(使用测试数据集,合并功能似乎起作用)-但是我对这里的示例确实有疑问https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html。如果您看第一个示例,它将两个df合并,则输出具有更多列和更多ROWS。我只想返回一个新列-如v查找的工作方式。同样,当我尝试以上代码时,也会出现此错误:

agingdf = agingdf.merge(plannerdf, left_on ='Cust_PO_Number', right_on='Cust_PO_Number')

ValueError: The column label 'Cust_PO_Number' is not unique.
For a multi-index, the label must be a tuple with elements corresponding to each level.

下面是一张公开票,似乎与我的问题相似,但没有解决方案。

https://github.com/pandas-dev/pandas/issues/20769

如果这含糊,我深表歉意,我无法上传df和excel文件,因为这是为了工作,而我尝试的测试DF并没有引发相同的错误。

最后,我只想对pandas进行vlookup,并且vlookup值可能是重复的,因此在这种情况下,只要先击中任何重复的值,那就是将在新列中返回的值。 / p>

下面是一个示例df,可帮助您想象Cust_PO_Number中重复项的含义

a = {'Cust_PO_Number': ['A', 'B', 'C', 'C'], 'ColumnB': [1,2,3,4]}
b = {'Cust_PO_Number': ['A', 'B', 'C', 'C'], 'Column_That_I_Want_added': [2,3,4,5]}
df = pd.DataFrame(data=a)
df2 = pd.DataFrame(data=b)

desired df
c = {'ColumnA': ['A', 'B', 'C', 'C'], 'ColumnB': [1,2,3,4], 'MatchedColumn', [2,3,4,5]}

desireddf = pd.DataFrame(data=c)

现在要探索多级列

print(plannerdf.columns)
MultiIndex(levels=[['Cust_PO_Number', 'Department']],
           labels=[[0, 1]])

1 个答案:

答案 0 :(得分:0)

尝试一下:

df.insert(2,'Column_That_I_Want_added', df['Cust_PO_Number'].map(df2.drop_duplicates('Cust_PO_Number').set_index('Cust_PO_Number')['Column_That_I_Want_added']))

其中df是原始数据帧以及所需的数据帧,而df2是您从中查找数据的位置。