根据另一个数据框中的信息编辑数据框中的值
Editting values in a dataframe based of the information in another dataframe
我有一个名为 _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
在完整的数据库中,dataframe 中有 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' 中的 ID 相同。 _df2中的这个'indexID'对应_df1中的'id'。
以_df2中的第一行为例,表示索引4和5相同。因此,我需要在 _df1 中将所有具有 'id' 5 的帧的 'id' 值更改为 4。这是最终 table 的示例,因为 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
使用replace
df1.id=df.id.replace(dict(zip(df2.indexID,df2.matchID)))
我有一个名为 _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
在完整的数据库中,dataframe 中有 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' 中的 ID 相同。 _df2中的这个'indexID'对应_df1中的'id'。
以_df2中的第一行为例,表示索引4和5相同。因此,我需要在 _df1 中将所有具有 'id' 5 的帧的 'id' 值更改为 4。这是最终 table 的示例,因为 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
使用replace
df1.id=df.id.replace(dict(zip(df2.indexID,df2.matchID)))