首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在使用dataframe时,我希望根据另一列中的值来操作列值

在使用dataframe时,我希望根据另一列中的值来操作列值
EN

Stack Overflow用户
提问于 2015-12-16 18:32:50
回答 4查看 92关注 0票数 0

在使用dataframe时,我希望根据另一列中的值来操作列值。下面是我的可重现代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# four items
items <- c("coke", "tea", "shampoo","aspirin")

# scores for each item
score <- as.numeric(c(65,30,45,20))

# making a data frame of the two vectors created
df <- as.data.frame(cbind(items,score))

# score for coke is 65 and for tea it is 30.  I want to
# double score for tea OR coke if the score is below 50

ifelse(df$score[df$items %in% c("coke", "tea")] < 50, df$score*2, df$score)

#the above return NULL values with warning

#the statement df$score[df$items %in% c("coke", "tea")] does pull coke and tea scores

df$score[df$items %in% c("coke", "tea")]

非常感谢您的帮助

EN

回答 4

Stack Overflow用户

发布于 2015-12-16 18:45:05

现在应该可以做到这一点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
items <- c("coke", "tea", "shampoo","aspirin")

# scores for each item
score <- as.numeric(c(65,30,45,20))

尝试使用data.frame而不是as.data.frame。使用后一种方法会将值转换为系数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# making a data frame of the two vectors created
df <- data.frame(items, score)

df
    items score
1    coke    65
2     tea    30
3 shampoo    45
4 aspirin    20


# score for coke is 65 and for tea it is 30.  I want to
# double score for tea OR coke if the score is below 50

df$score[df$items %in% c("coke", "tea")] = ifelse(df$score[df$items %in% c("coke", "tea")] < 50, df$score*2, df$score)

df
    items score
1    coke    65
2     tea    60
3 shampoo    45
4 aspirin    20

但是,如果最终有重复的条目,则此方法不起作用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# New data with an added entry for item = coke and score = 15:
items <- c("coke", "tea", "shampoo","aspirin","coke")
# scores for each item
score <- c(65,30,45,20,15)

# making a data frame of the two vectors created
df <- data.frame(items, score)


# using the method from above the last entry get converted to a value of 90
# instead of 30
df$score[df$items %in% c("coke", "tea")] = ifelse(df$score[df$items %in% c("coke", "tea")] < 50, df$score*2, df$score)

df
    items score
1    coke    65
2     tea    60
3 shampoo    45
4 aspirin    20
5    coke    90

因此,如果有任何情况下可能有重复的条目,则必须使用此方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df <- data.frame(items, score)

df$score[df$items %in% c("coke", "tea") & df$score < 50] <- 2* df$score[df$items %in% c("coke", "tea") & df$score < 50]

df
    items score
1    coke    65
2     tea    60
3 shampoo    45
4 aspirin    20
5    coke    30
票数 1
EN

Stack Overflow用户

发布于 2015-12-16 18:43:34

您的问题不需要if语句。您可以只组合两个逻辑语句。

逻辑1:df$items %in% c("coke", "tea")

逻辑2:df$score < 50

通过过滤这两个逻辑语句上的数据帧,您可以将分数相乘。and= &,or= |

df$score[df$items %in% c("coke", "tea") | df$score < 50] <- 2* df$score[df$items %in% c("coke", "tea") | df$score < 50]

票数 0
EN

Stack Overflow用户

发布于 2015-12-16 18:50:19

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
items <- c("coke", "tea", "shampoo","aspirin")
score <- as.numeric(c(65,30,45,20))   

如果以下面的方式调用data.frame(),就可以避免将分数列转换为因子。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df <- data.frame(items=items,score=score)

您不需要if语句。您可以简单地根据两个逻辑语句提取您感兴趣的值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df[df$score<50 & df$items %in% c("coke", "tea"), "score"] <- 2 * df[df$score<50 & df$items %in% c("coke", "tea"), "score"]

  • df$score<50 & df$items %in% c("coke", "tea")选择与两个条件都匹配的行,即item coke或tea and score less than 50.
  • "score"仅选择score列
  • <-右侧的语句提取相同的值并将其乘以2。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34319562

复制
相关文章
【说站】Python DataFrame如何根据列值选择行
以上就是Python DataFrame根据列值选择行的方法,希望对大家有所帮助。
很酷的站长
2022/11/24
5.3K0
【说站】Python DataFrame如何根据列值选择行
删除列中的 NULL 值
今天接到一个群友的需求,有一张表的数据如图 1,他希望能通过 SQL 查询出图 2 的结果。
白日梦想家
2020/07/20
9.9K0
删除列中的 NULL 值
获取GridView中的某列值
    protected void GridView1_RowEditing(object sen
Java架构师必看
2021/03/22
10.2K0
Excel应用实践19:根据工作表某列中的值从另一工作簿中获取数据
在下图1所示的工作簿Data.xlsx的工作表Sheet1中,存放着待使用的数据。
fanjy
2019/08/27
19K0
Excel应用实践19:根据工作表某列中的值从另一工作簿中获取数据
Pandas 查找,丢弃列值唯一的列
数据清洗很重要,本文演示如何使用 Python Pandas 来查找和丢弃 DataFrame 中列值唯一的列,简言之,就是某列的数值除空值外,全都是一样的,比如:全0,全1,或者全部都是一样的字符串如:已支付,已支付,已支付…
萝 卜
2022/05/12
5.7K0
Pandas 查找,丢弃列值唯一的列
从DataFrame中删除列
在操作数据的时候,DataFrame对象中删除一个或多个列是常见的操作,并且实现方法较多,然而这中间有很多细节值得关注。
老齐
2021/03/29
7.1K0
使用EXCLE表格,有相同列,取某一列的值
如图,我有两列MAC地址表,然后需要把F列的值取值到D列,可以使用公式:=VLOOKUP(A1,$E$1:$F$44,2,0)进行处理数据。A1代表以哪一列为基础取值参考,$E$1:$F$44代表查找对比范围。
Tacc
2022/01/11
4.4K0
使用EXCLE表格,有相同列,取某一列的值
ORACLE列值合併
在SQL Server中合併列值能够使用For Xml Path,在Oracle中則能够使用wm_concat 或 ListAgg。
全栈程序员站长
2022/07/13
1.1K0
如何使用python连接MySQL表的列值?
MySQL 是一个开源关系数据库管理系统,广泛用于存储、管理和组织数据。使用 MySQL 表时,通常需要将多个列值组合成一个字符串以进行报告和分析。Python是一种高级编程语言,提供了多个库,可以连接到MySQL数据库和执行SQL查询。
很酷的站长
2023/08/11
3070
如何使用python连接MySQL表的列值?
(3)合并列值与分拆列值
在SQL中分拆列值和合并列值老生常谈了,从网上搜刮了一下并记录下来,以便不时之需 :)
跟着阿笨一起玩NET
2018/09/18
1.2K0
(3)合并列值与分拆列值
Excel公式技巧71:查找一列中有多少个值出现在另一列中
有时候,我们想要知道某列中有多少个值同时又出现在另一列中,例如下图1所示,列B中有一系列值,列D中有一系列值,哪些值既出现有列B中又出现在列D中。因为数据较少,不难看出,在列B中仅有2个值出现在列D中,即“完美Excel”和“Office”。
fanjy
2020/12/08
3.4K0
Excel公式技巧71:查找一列中有多少个值出现在另一列中
Mysql与Oracle中修改列的默认值
背景: 业务发展需要,需要复用历史的表,并且通过表里面原来一个未使用的字段来区分不同的业务。 于是想到通过default来修改列的默认值: alter table A modify column biz default 'old' comment '业务标识 old-老业务, new-新业务' 现象: 上线几天之后,业务反馈旧业务的相关数据查询不到了。找后台运维查生产数据库,发现历史数据的biz字段还是null 原因: 自己在本地mysql数据库试了下,好像的确是default没法修改历史数据为null
SecondWorld
2021/09/08
13.2K0
Django ORM 查询表中某列字段值
方式一获取到的是一个QuerySet,内容是键值对构成的,键为表的列名,值为对应的每个值。
BigYoung小站
2020/05/04
3.7K0
Windows - Hash散列值抓取方法
LM Hash(LAN Manager Hash)其本质是 DES 加密。在 Windows 2008 及开始之后默认禁用的是 LM Hash。
渗透攻击红队
2020/11/25
1.9K0
Windows - Hash散列值抓取方法
关于mysql给列加索引这个列值中有null的情况
在需求中由于要批量查数据,且表中数据量挺大(2300万条记录) 且查询条件的这两个字段没有加索引,为了增加查询速度,现在需要去为这两个字段添加索引。 刚开始加索引想到的问题:
袁新栋-jeff.yuan
2020/08/26
4.3K0
mybatis文件映射之利分布查询时传递多列值 (七)
我们可以将<collection property="employee" select="com.gong.mybatis.dao.EmployeeMapperPlus.getEmpsByDeptId" column="id"> 这里的column="id"改为column="{deptId=id}"。
西西嘛呦
2020/08/26
8880
dataframe行变换为列
使用 import org.apache.spark.sql.functions 里面的函数,具体的方式可以看 functions :
机器学习和大数据挖掘
2019/07/01
1.1K0
mysql使用default给列设置默认值的问题
add column和modify column在default的语义上处理不一样。
翎野君
2023/07/27
9570
mysql使用default给列设置默认值的问题
点击加载更多

相似问题

我希望根据熊猫中相同的列值来填充列的空白值。

10

根据另一列中的值替换DataFrame列中的值

317

根据dataframe中另一列的值添加列

24

根据列值从DataFrame中的列插入值到另一列

23

Pandas DataFrame:根据其他列中的值操作一列中的值

121
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文