python - Pandas 条件映射/填充/替换
问题描述
d1=pd.DataFrame({'x':['a','b','c','c'],'y':[-1,-2,-3,0]})
d2=pd.DataFrame({'x':['d','c','a','b'],'y':[0.1,0.2,0.3,0.4]})
我想用d2 中d1.y
的通讯员替换 where y<0 。y
这有点像 Excel 中的 vlookup。核心问题是根据 x 替换 y 而不是简单地操纵 y。我想要的是
Out[40]:
x y
0 a 0.3
1 b 0.4
2 c 0.2
3 c 0.0
解决方案
使用Series.map
条件:
s = d2.set_index('x')['y']
d1.loc[d1.y < 0, 'y'] = d1['x'].map(s)
print (d1)
x y
0 a 0.3
1 b 0.4
2 c 0.2
3 c 0.0
推荐阅读
- c# - ASP.net core 2. 0 使用事务范围时出错:请求的操作无法完成,因为连接已断开
- python - 将一个列表的第 i 个索引与另一个列表的第 i+1 个索引进行比较
- youtube - 如何按订阅者数量获得最多的 youtube 频道
- java - 有没有办法在TestNG中向@Factory注解发送多个参数
- django - 如何在 django rest 中找到两个用户之间的连接?
- python - 如何在python中输入一对浮点数和整数
- java - 在 Eclipse 格式化程序中应用正则表达式
- javascript - 在 MongoDB 中存储文章的图像
- java - Android Wear:很奇怪的等待周期
- python - 使用 PIL 模块写入特定字段