区块链技术博客
www.b2bchain.cn

用另一个数据框中的值替换一个数据框中的逗号分隔值 – python程序员分享

本文介绍了用另一个数据框中的值替换一个数据框中的逗号分隔值 – python程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

这是我对StackOverflow的第一个问题,所以如果我不清楚的话,请原谅。我通常在这里找到答案,但是这次我没有运气。也许我很稠密,但是我们走了。

我有两个 Pandas 数据框,格式如下

df1

+------------+-------------+ | References | Description | +------------+-------------+ | 1,2        | Descr 1     | | 3          | Descr 2     | | 2,3,5      | Descr 3     | +------------+-------------+ 

df2

+--------+--------------+ | Ref_ID |   ShortRef   | +--------+--------------+ |      1 | Smith (2006) | |      2 | Mike (2009)  | |      3 | John (2014)  | |      4 | Cole (2007)  | |      5 | Jill (2019)  | |      6 | Tom (2007)   | +--------+--------------+ 

基本上, df2 中的Ref_ID包含ID,这些ID构成 df1 中“引用”字段中包含的字符串。

我想做的是替换 df1 中“引用”字段中的值,如下所示:

+-------------------------------------+-------------+ |             References              | Description | +-------------------------------------+-------------+ | Smith (2006); Mike (2009)           | Descr 1     | | John (2014)                         | Descr 2     | | Mike (2009);John (2014);Jill (2019) | Descr 3     | +-------------------------------------+-------------+ 

到目前为止,我不得不以1-1的关系处理列和ID,这很完美
Pandas – Replacing Values by Looking Up in an Another Dataframe

但是我无法解决这个略有不同的问题。我唯一想到的解决方案是重新循环一个for和if周期,以比较 df1 df2 的每个字符串并进行替换。

恐怕这会非常缓慢,因为2000个唯一的Ref_ID,我必须在几列中重复进行此操作,类似于“参考”。

有人愿意指出正确的方向吗?

提前谢谢了。

参考方案

让我们尝试一下:

df1 = pd.DataFrame({'Reference':['1,2','3','1,3,5'], 'Description':['Descr 1', 'Descr 2', 'Descr 3']}) df2 = pd.DataFrame({'Ref_ID':[1,2,3,4,5,6], 'ShortRef':['Smith (2006)',                                                        'Mike (2009)',                                                        'John (2014)',                                                        'Cole (2007)',                                                        'Jill (2019)',                                                        'Tom (2007)']})  df1['Reference2'] = (df1['Reference'].str.split(',')                                      .explode()                                      .map(df2.assign(Ref_ID=df2.Ref_ID.astype(str))                                              .set_index('Ref_ID')['ShortRef'])                                      .groupby(level=0).agg(list)) 

输出:

  Reference Description                                Reference2 0       1,2     Descr 1               [Smith (2006), Mike (2009)] 1         3     Descr 2                             [John (2014)] 2     1,3,5     Descr 3  [Smith (2006), John (2014), Jill (2019)] 

@Datanovice感谢您的更新。

df1['Reference2'] = (df1['Reference'].str.split(',')                                      .explode()                                      .map(df2.assign(Ref_ID=df2.Ref_ID.astype(str))                                              .set_index('Ref_ID')['ShortRef'])                                      .groupby(level=0).agg(';'.join)) 

输出:

  Reference Description                            Reference2 0       1,2     Descr 1              Smith (2006);Mike (2009) 1         3     Descr 2                           John (2014) 2     1,3,5     Descr 3  Smith (2006);John (2014);Jill (2019) 

我有一个像这样的数据框:cluster org time 1 a 8 1 a 6 2 h 34 1 c 23 2 d 74 3 w 6 我想计算每个集群每个组织的平均时间。预期结果:cluster mean(time) 1 15 ((8+6)/2+23)/2 2 54 (74+34)/2 3 6 我不知道如何在熊猫中做到这一点,有人可以帮忙吗? 参考方案 如…

尽管至少有关于如何在Python的pandas库中为DataFrame编制索引的two good教程,但我仍然无法在一个以上的列上找到一种优雅的SELECT编码方式。>>> d = pd.DataFrame({'x':[1, 2, 3, 4, 5], 'y':[4, 5, 6, 7, 8]}) &gt…

datas = [['RAC1','CD0287',1.52], ['RAC1','CD0695',2.08], ['RAC1','ADN103-1',2.01], ['RAC3','CD0258',…

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)… python文件:def get(request): … return Response(seriali…

我有一个大的pandas数据框,试图从中形成一些行的对。我的df如下所示:object_id increment location event 0 1 d A 0 2 d B 0 3 z C 0 4 g A 0 5 g B 0 6 i C 1 1 k A 1 2 k B … … … … 对象ID描述特定的对象。增量是每次发生某事(跟踪订单)时…

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 用另一个数据框中的值替换一个数据框中的逗号分隔值 – python程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们