python - 每个 id pandas 第一行的条件在哪里
问题描述
我有一个df:
id items price less
a Fruits 120 20
a Fruits 220 20
a Fruits 320 20
b Fruits 120 50
b Fruits 280 20
b Fruits 320 20
我想通过减去较少的列值来操纵每个 id 的第一行的 price 列的值,例如
id items price
a Fruits 100 #120-20(less value)
a Fruits 220
a Fruits 320
b Fruits 70 #120-50
b Fruits 280
b Fruits 320
它应该只用于每个 id 的第一行。
解决方案
您可以使用duplicated
overid
列(默认情况下,将第一个标记为不重复)并np.where
选择要执行的操作:
df["new_price"] = np.where(df.duplicated("id"), df.price, df.price - df.less)
要得到
>>> df
id items price less new_price
0 a Fruits 120 20 100
1 a Fruits 220 20 220
2 a Fruits 320 20 320
3 b Fruits 120 50 70
4 b Fruits 280 20 280
5 b Fruits 320 20 320
推荐阅读
- javascript - For 和 MailApp 的问题
- ruby - Pusher 无法建立连接
- php - 如何生成发送到电子邮件的自动编号
- firebase - 确定嵌套子集合的 Firebase 读取次数
- amazon-dynamodb - 基于 GSI 查询 DynamoDB
- javascript - 当导入的文件正在导入一个文件,而导入它的文件也在导入该文件时会发生什么?
- swift - Xcode Beta 6“没有更多上下文的表达式类型不明确”导航链接
- angular - scrollablePlotArea 和向下钻取按钮位置
- c - 在线裁判中的错误答案 (CODECHEF)
- python - 如何将具有 XY 坐标的 TXT 文件转换为点特征?