python - 如果数据框中的值与另一行中的值匹配,则更改数据框中的值
问题描述
我目前有一个如下所示的数据框:
Owner Vehicle_Color
0 James Red
1 Peter Green
2 James Blue
3 Sally Blue
4 Steven Red
5 James Blue
6 James Red
7 Peter Blue
请注意,James
有两个vehicle_colors
附在他身上,Red
并且Blue
我想要做的是,如果所有者在列的任何位置都有颜色Red
值Vehicle_Color
,请将所有其他值替换为Red
.
有什么想法吗?
谢谢
解决方案
transform
让我们使用+摆脱 lambda any
:
m = df.Vehicle_Color.eq('Red').groupby(df.Owner).transform('any')
df.loc[m, 'Vehicle_Color'] = 'Red'
或者,
m = (
df.set_index('Owner')
.Vehicle_Color
.eq('Red')
.groupby(level=0)
.transform('any')
)
df.loc[m, 'Vehicle_Color'] = 'Red'
这应该会稍微快一些,因为 grouper 是在df
's index 上指定的。
df
Owner Vehicle_Color
0 James Red
1 Peter Green
2 James Red
3 Sally Blue
4 Steven Red
5 James Red
6 James Red
7 Peter Blue
推荐阅读
- powershell - 通过 Start-Process 启动的脚本在 90% 的情况下都有效 - 当它“失败”时,它只是变成了一个僵尸并且不执行第一行代码
- dynamics-crm - 从数组中提取元素,然后使用逻辑应用更新它们的字段
- c# - 一年后,应用程序现在抛出:System.Net.Sockets.SocketException:现有连接被远程主机强行关闭
- html - 仅当浏览器上的屏幕缩小时,如何才能显示消息?
- r - 将独立的 y 轴添加到 ggplot 图
- java - 从 GoogleCredentials 获取 applicationDefault
- oracle - 从 JDBC 使用 Oracle COLLECT 聚合函数
- swagger - swagger-ui-bundle.js 对于 AWS Lambda 和 ALB 来说太大了
- javascript - 连接 React Dropzone Uploader 和 Flask
- python-3.x - 如何使用 matplotlib 绘制日期时间?