我正在尝试模仿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]])
答案 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
是您从中查找数据的位置。