【发布时间】:2023-03-30 20:43:02
【问题描述】:
在“供应商”df 中,我正在尝试创建一个名为“Non-PO 类别”的列,该列将根据“唯一”列中的值具有来自 df“类别”的“类别”。
这里是 dfs:
import pandas as pd
suppliers = pd.DataFrame({'Vendor Number': ['260508', '260525', '260549', '260561','260579','260587'],
'Unique': ['26050822015070', '26052522002153', '260549EXPENSE', '260561EXPENSE','2605792972508701C0000','26058738210793']})
categories = pd.DataFrame({'Vendor Number': ['260508', '260525', '260549','260587'],
'Unique': ['26050822015070', '26052522002153', '260549EXPENSE','26058738210793'],
'Category': ['Maintenance', 'IT','Facilities','Travel Agent']})
当我使用时:
suppliers['Non-PO Category'] = pd.merge(suppliers, categories[['Unique','Category']], on='Unique', how='left')
或
suppliers['Non-PO Category'] = pd.merge(suppliers, categories, how='left', left_on='Unique', right_on='Unique')
我收到错误:ValueError: 传递的项目数量错误 4,位置意味着 1
提前谢谢你。
【问题讨论】:
-
为什么要使用 NonPO_Suppliers[['Unique','Category']]?改用:pd.merge(final, NonPO_Suppliers, how=left, left_on=key_of_left_table, right_on=key_on_right_table)
-
@Trics。谢谢你。我进行了更改,但收到错误消息:“错误的项目数超过了 17,位置意味着 1”?
-
@Andrian,如果你能提供你的数据框样本,我会尽力为你提供你所需要的。
-
@sophods 谢谢。我已经用 dfs 和简化的问题陈述更新了我的问题。
-
@Andrian 感谢您这样做。请检查下面的更新答案。我认为这就是你所需要的。告诉我。