首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何像字典一样添加键值对?

如何像字典一样添加键值对?
EN

Stack Overflow用户
提问于 2017-09-03 01:47:02
回答 3查看 893关注 0票数 1

我的数据(总共8532个)如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Prd_Id  Weight
DRA24   19.35
DRA24   NA
DRA24   NA
DRA24   19.35
DRA24   19.35
DRA59   8.27
DRA59   8.27
DRA59   8.27
DRA59   8.27
DRA59   NA
DRA59   NA

基本上,问题是有很多对Prd_idweight,其中有些Prd_id没有提到weight --例如,我在数据中显示,第二和第三没有,所以我知道weight的值,我只需要用它替换NA,所有相同的Prd_id都会有相同的weight,但是在R中没有像字典这样的东西,所以我发现很难解决这个问题。我试过使用for loop,但是需要很长时间,我的代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for(i in 1:nrow(bms)){
  for(j in 1:1555){
    if(spl$Prd_Id[j]==bms$Prd_Id[i]){
      bms$weight[i]=spl$weight[j]
    }
  }
}

bms是整个data (8532个),spl (1555个)是bms的一个子集,其值为Prd_Id

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-03 03:04:10

正如@r2evans所建议的那样,您可以使用类似SQL的连接策略,再加上dplyr的coalesce,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(dplyr)

# create 'bms'.
bms <- data_frame(
  Prd_Id = c("DRA24", "DRA24", "DRA24", "DRA24", "DRA24", "DRA59", "DRA59", "DRA59", "DRA59", "DRA59", "DRA59"),
  Weight = c(19.35, NA, NA, 19.35, 19.35, 8.27, 8.27, 8.27, 8.27, NA, NA)
)

# create 'spl'
spl <- bms %>% filter(!is.na(Weight)) %>% filter(!duplicated(Prd_Id))

# SQL-like join and coalesce strategy
res <- bms %>% 
  left_join(spl, by = "Prd_Id", suffix = c("_bms", "_spl")) %>% 
  mutate(Weight = coalesce(Weight_bms, Weight_spl)) %>%
  select(-Weight_bms, -Weight_spl)
票数 1
EN

Stack Overflow用户

发布于 2017-09-04 03:11:10

不需要left_join

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bms %>% 
  group_by(Prd_Id) %>% 
  mutate(Weight = Weight[!is.na(Weight)][1])

另一种使用first的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bms %>% 
  group_by(Prd_Id) %>% 
  mutate(Weight = first(Weight[!is.na(Weight)]))

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# A tibble: 11 x 2
# Groups:   Prd_Id [2]
   Prd_Id Weight
    <chr>  <dbl>
 1  DRA24  19.35
 2  DRA24  19.35
 3  DRA24  19.35
 4  DRA24  19.35
 5  DRA24  19.35
 6  DRA59   8.27
 7  DRA59   8.27
 8  DRA59   8.27
 9  DRA59   8.27
10  DRA59   8.27
11  DRA59   8.27

当然,你也可以在香草R中这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
transform(bms, Weight = ave(Weight, Prd_Id, FUN = function(x) x[!is.na(x)][1]))

结果是相同的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Prd_Id Weight
1   DRA24  19.35
2   DRA24  19.35
3   DRA24  19.35
4   DRA24  19.35
5   DRA24  19.35
6   DRA59   8.27
7   DRA59   8.27
8   DRA59   8.27
9   DRA59   8.27
10  DRA59   8.27
11  DRA59   8.27
票数 1
EN

Stack Overflow用户

发布于 2017-09-04 03:07:14

这里有一个基本的R解

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# example data
bms <- data.frame(
  Prd_Id = c("DRA24", "DRA24", "DRA24", "DRA24", "DRA24", "DRA59", "DRA59", "DRA59", "DRA59", "DRA59", "DRA59"),
  Weight = c(19.35, NA, NA, 19.35, 19.35, 8.27, 8.27, 8.27, 8.27, NA, NA)
)

# create key-value pairs
spl <- unique(bms[!is.na(bms[,"Weight"]),])
spl <- setNames(spl[,"Weight"], spl[,"Prd_Id"])

# fill NAs
idx <- which(is.na(bms[,"Weight"]))
bms[idx,"Weight"] <- spl[bms[idx, "Prd_Id"]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46022154

复制
相关文章
【Python】字典 dict ② ( 字典常用操作 | 字典 新增 / 更新 键值对元素 | 字典 删除 键值对元素 | 字典 清空 键值对元素 )
上面的语法 , 就是向 字典变量 中添加新的 键值对元素 键Key: 值Value ;
韩曙亮
2023/10/11
3390
【说站】python字典如何删除键值对
以上就是python字典删除键值对的方法,希望对大家有所帮助。更多Python学习指路:python基础教程
很酷的站长
2022/11/23
3.4K0
【说站】python字典如何删除键值对
Python-字典:键值对的魔法世界
在Python中,字典(Dictionary)是一种强大且常用的数据结构,它允许我们存储和组织键值对(Key-Value)数据。与列表和元组不同,字典中的数据是无序的,但每个数据都与一个唯一的键相关联,这使得字典在表示和访问数据时非常高效
用户9006224
2023/10/11
2610
Python对字典根据键值分组进行排序
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119530.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/11
4.5K0
python字典批量删除多个键值对(连续)
  搜不到字典批量删除多个键值对的方法,换了个搜索姿势,批量取N个元素,那么组合一下,就出来了!
逆向小白
2023/10/16
2060
python字典批量删除多个键值对(连续)
【说站】python字典中添加新的键值
1、字典是动态结构,可以随时添加新的元素。如在字典中添加bullet子弹的x和y坐标。print(bullet)可以看到字典中有了bullet子弹的坐标。
很酷的站长
2022/11/24
1.3K0
【说站】python字典中添加新的键值
【说站】python字典中键值对的操作
对于字典中不再需要的信息,可以使用del句子完全删除相应的键值。使用del句子时,必须指定字典名称和要删除的键。
很酷的站长
2022/11/23
9820
【说站】python字典中键值对的操作
【说站】python字典遍历所有的键值对
1、通过调用字典的items返回一个键值对列表,然后使用key和value变量分别接收列表数据中包含的键和值。
很酷的站长
2022/11/24
8150
【说站】python字典遍历所有的键值对
Python字典查询键值对的方法【大全】
查找是我们所有数据类型学习中的重点,字典也不例外,用不同的方法从不同的维度查找,应有尽有。下面就从简到难一步一步来学习字典的查询方法。
python自学网
2021/12/02
4.3K0
Python字典查询键值对的方法【大全】
Python3中如何删除字典中值为空的键值对?
细心的朋友会发现,这里我们对data.keys()做了一个list()操作,请大家想想为什么要做这样的一个操作呢?
BigYoung小站
2020/05/04
5.9K0
Python - 多键值字典
Python 字典是基本的数据结构之一,有时需要用到多个键值维护一组数据,事实上python的 dict 已经支持类似功能,本文记录实现方法。 python 字典简介 字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示: d = {key1 : value1, key2 : value2 } [1] python 中字典的 key 要求可哈希,而且必须不可变,可以用
为为为什么
2022/08/04
1.3K0
Python - 多键值字典
java键值对_Java 读写键值对
public static void main(String[] args) throws IOException {
全栈程序员站长
2022/07/23
2.1K0
entity_addict | 像对象一样去操作字典
entity_addict是扩展了addict的部分功能之前是本想合并到addict上面的
用户9897904
2022/07/14
2340
entity_addict | 像对象一样去操作字典
Qt中QMap键值对基本用法(键值对)
T1为键值对中的键key,T2为键值对中的值。通过键值对中的键可以搜索到值。一般来说,键值对中的键是唯一的,不可重复,而值没有要求,可以重复。并且QMap具有自动排序功能,对输入的键进行排序。
全栈程序员站长
2022/09/02
3.6K0
键值对操作
键值对 RDD 通常用来进行聚合计算。我们一般要先通过一些初始 ETL(抽取、转化、装载)操作来将数据转化为键值对形式。键值对 RDD 提供了一些新的操作接口(比如统计每个产品的评论,将数据中键相同的分为一组,将两个不同的 RDD 进行分组合并等)。
全栈程序员站长
2022/07/23
3.5K0
键值对操作
4个Python字典的循环遍历(key、value、元素、键值对拆包)
利用字典序列.items(),返回可迭代对象,内部是元组,元组有2个数据,元组数据1是字典的key,元组数据2是字典的value,所以再利用2个临时变量来遍历字典数据将数据分离出来,最后整理成自己想要输出的数据格式。
python自学网
2022/04/24
8.4K0
4个Python字典的循环遍历(key、value、元素、键值对拆包)
Python字典删除元素和键值对的4种方法与示例
在删除每个字典的时候有些方法和删除其他拥有独立内存的数据使用的方法是一样的,比如del,直接清空内存,clear()是只清除变量值。字典的删除我们从字典对象本身和字典中的键值对两个方面出发,来学习一下。
python自学网
2021/12/02
13.8K0
Python字典删除元素和键值对的4种方法与示例
etcd 存储:如何实现键值对的读写操作?
你好,我是 aoho,今天我和你分享的主题是 etcd 存储:如何实现键值对的读写操作?
aoho求索
2022/06/23
1.6K0
etcd 存储:如何实现键值对的读写操作?
如何像Elon一样演示你的模型
想必很多人都看过Elon在上古时期的演示手势控制的视频吧,那个时候他拿着leap motion,兴奋的讨论着设计、交互的未来。
UDM Lab
2020/06/16
4530
如何像数据科学家一样思考
原作者 Rahul Agarwal 编译 CDA 编译团队 本文为  CDA 数据分析师原创作品,转载需授权 作为一名数据科学家需要很挑剔,并且善于发现他人会遗漏的东西。那么我们应该如何做到像数据科学
CDA数据分析师
2018/02/26
6930
如何像数据科学家一样思考

相似问题

向嵌套字典添加键值对

10

如何动态创建字典和添加键值对?

1610

如何在字典的末尾添加键值对?

10

字典键值对

11

在字典内的字典中添加键值对

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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