python - 如何使用一些附加条件对我的数据帧执行 vlookup 等效操作
问题描述
嗨,我正在尝试在 python 上运行查找等效函数,但是尝试了合并和加入,但我还没有成功。
所以我的第一个df是这个
list = ['Computer', 'AA', 'Monitor', 'BB', 'Printer', 'BB', 'Desk', 'AA', 'Printer', 'DD', 'Desk', 'BB']
list2 = [1500, 232, 300, 2323, 150, 2323, 250, 2323, 23, 34, 45, 56]
df = pd.DataFrame(list,columns=['product'])
df['number'] = list2
这就是df的样子
product number
0 Computer 1500
1 AA 232
2 Monitor 300
3 BB 2323
4 Printer 150
5 BB 2323
6 Desk 250
7 AA 2323
8 Printer 23
9 DD 34
10 Desk 45
11 BB 56
这是第二个数据框
list_n = ['AA','BB','CC','DD']
list_n2 = ['Y','N','N','Y']
df2 = pd.DataFrame(list_n,columns=['product'])
df2['to_add'] = list_n2
这就是 df2 的样子
product to_add
0 AA Y
1 BB N
2 CC N
3 DD Y
现在,如何向第一个数据帧 (df) 添加一列 ('to_add'),使其看起来有点像这样。在 excel 中,它是一个简单的 vlookup。我尝试了“合并”和“加入”功能,但它改变了我的 df 的顺序,我不希望顺序改变。有任何想法吗?
product price to_add
0 Computer 1500
1 AA 232 Y
2 Monitor 300
3 BB 2323 N
4 Printer 150
5 BB 2323 N
6 Desk 250
7 AA 2323 Y
8 Printer 23
9 DD 34 Y
10 Desk 45
11 BB 56 N
解决方案
pd.merge
确实会完成这项工作,可能你没有正确使用它:
pd.merge(df, df2, on="product", how="left")
将返回:
product number to_add
0 Computer 1500 NaN
1 AA 232 Y
2 Monitor 300 NaN
3 BB 2323 N
4 Printer 150 NaN
5 BB 2323 N
6 Desk 250 NaN
7 AA 2323 Y
8 Printer 23 NaN
9 DD 34 Y
10 Desk 45 NaN
11 BB 56 N
推荐阅读
- html - 无法在字符串 'userForm' 上创建属性 'validator' - 使用组件工厂
- java - 键入列表的第一个/第二个/第三个参数
- r - 从数据帧中获取值以循环操作到另一个数据帧
- json - NiFi 中的 JoltTransformJSON 处理器
- bash - 如何创建运行 vswhere.exe 并使用空格执行路径的 ZSH 别名(在 WSL 上)?
- c# - C# 试图弄清楚如何将负值合并到我的代码中
- bamboo - 如何从 BAMBOO 调用 Rest API
- python - 猪在Python中拉丁化字符串
- macos - 滚动时如何在 NSTableview 中显示滚动指示器,不滚动时隐藏
- nativescript - 如何在 nativescript angular 中从本地 ios 访问 UIScrollview 委托?