【问题标题】:Editting values in a dataframe based of the information in another dataframe根据另一个数据框中的信息编辑数据框中的值
【发布时间】:2023-03-29 09:36:01
【问题描述】:

我有一个名为 _df1 的数据框,看起来像这样。请注意,这不是整个数据框,而是其中的一部分。

_df1:

frame   id  x1      y1  x2  y2  
1        1  1363    569 103 241   
2        1  1362    568 103 241  
3        1  1362    568 103 241  
4        1  1362    568 103 241   
964      5  925     932 80  255   
965      5  925     932 79  255   
966      5  925     932 79  255   
967      5  924     932 80  255  
968      5  924     932 79  255   
16       6  631     761 100 251   
17       6  631     761 100 251  
18       6  631     761 100 251   
19       6  631     761 100 251
20       6  631     761 100 251
21       6  631     761 100 251
88       7  623     901 144 123
89       7  623     901 144 123
90       7  623     901 144 123
91       7  623     901 144 123
92       7  623     901 144 123
93       7  623     901 144 123
94       7  623     901 144 123

在完整的数据库中,数据框中有 108003 行和 141 个唯一 ID。 ID 表示特定对象,只要该框架具有该对象,该 ID 就会重复。换句话说,我的数据有 141 个不同的对象和 108003 帧。我编写了一个代码来识别具有相同对象但标有不同 ID 的框架。这保存在另一个名为 _df2 的数据框中,如下所示。这也只是数据框的一部分,而不是全部。

_df2:

indexID  matchID    
   4        5
   6        7
   8        9
   12       13
   18       19
   20       21
       .
       .
       .

第二个数据框显示哪些索引被错误地分类为不同的对象。这意味着“matchID”中的 ID 实际上与“indexID”是同一个对象。 _df2 中的这个“indexID”对应于 _df1 中的“id”。

以_df2中的第一行为例,它表示索引4和5是相同的。因此,我需要将 _df1 中所有具有 'id' 5 的帧的 'id' 值更改为 4。这是最终表应该是什么样子的示例,因为 5 必须被归类为 4,而 7 具有被归类为6。

输出:

frame   id  x1      y1  x2  y2  
1        1  1363    569 103 241   
2        1  1362    568 103 241  
3        1  1362    568 103 241  
4        1  1362    568 103 241   
964      4  925     932 80  255   
965      4  925     932 79  255   
966      4  925     932 79  255   
967      4  924     932 80  255  
968      4  924     932 79  255   
16       6  631     761 100 251   
17       6  631     761 100 251  
18       6  631     761 100 251   
19       6  631     761 100 251
20       6  631     761 100 251
21       6  631     761 100 251
88       6  623     901 144 123
89       6  623     901 144 123
90       6  623     901 144 123
91       6  623     901 144 123
92       6  623     901 144 123
93       6  623     901 144 123
94       6  623     901 144 123

【问题讨论】:

    标签: python pandas dataframe python-2.x


    【解决方案1】:

    使用replace

    df1.id=df.id.replace(dict(zip(df2.indexID,df2.matchID)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多