python - 根据条件设置熊猫数据框的值
问题描述
我找不到此查询的类似问题。但是,我有一个 pandas 数据框,我想在其中使用两列来设置条件,如果它为真,请替换其中一列中的值。
例如。我的一列是“项目名称”,另一列是“价值”。'itemname' 可能会重复很多次。我想检查每个“项目名称”,如果所有其他同名项目的值为 0,则将这些“值”替换为 100。
我知道这应该很简单,但是我无法理解它。
只是为了更清楚,在这里
itemname value
0 a 0
1 b 100
2 c 0
3 a 0
3 b 75
3 c 90
我希望我的声明将此数据框更改为
itemname value
0 a 100
1 b 100
2 c 0
3 a 100
3 b 75
3 c 90
希望这是有道理的。我检查是否有人问过类似的问题,但在这种情况下找不到东西。
解决方案
您可以使用GroupBy
+transform
来创建蒙版。pd.DataFrame.loc
然后通过和布尔索引分配:
mask = df.groupby('itemname')['value'].transform(lambda x: x.eq(0).all())
df.loc[mask.astype(bool), 'value'] = 100
print(df)
itemname value
0 a 100
1 b 100
2 c 0
3 a 100
3 b 75
3 c 90
推荐阅读
- angular - Angular ng-content:如何在里面找到元素?
- c - 将结构中的数据存储在另一个结构上
- android - 如何在 Android 中修复 Tab Activity 操作栏的颜色?
- javascript - 你能用js在别人里面切换html页面吗?
- python - Python Pandas 系列中的数据比较
- javascript - 在铯查看器/地图上覆盖工具栏
- java - jna 传递几个参数
- java - 为什么 setSupportActionBar() 不能识别我的工具栏?
- yii2 - Yii2 LinkPager 中带有自定义参数的漂亮 URL
- angular - 突出显示数组中的选定项目并循环浏览