gpt4 book ai didi

Python 将数据框中的所有值替换为其他数据框中的值

转载 作者:行者123 更新时间:2023-11-30 22:32:05 28 4
gpt4 key购买 nike

我对 python(和 pandas)很陌生,并且有一个大型数据框的替换任务,但我找不到解决方案。

所以我有两个数据帧,一个 (df1) 看起来像这样:

Id      Id      Id      
4954733 3929949 515674
2950086 1863885 4269069
1241018 3711213 4507609
3806276 2035233 4968071
4437138 1248817 1167192
5468160 4726010 2851685
1211786 2604463 5172095
2914539 5235788 4130808
4730974 5835757 1536235
2201352 5779683 5771612
3864854 4784259 2928288

另一个数据帧 (df2) 包含所有“旧”id 和下一列中相应的新 ID(从 1 到 20,000),如下所示:

Id       Id_new
5774290 1
761000 2
3489755 3
1084156 4
2188433 5
3456900 6
4364416 7
3518181 8
3926684 9
5797492 10
4435820 11

我想做的是将df1中的所有id(所有列)替换为df2中相应的Id_new。我想理想情况下,考虑到数据集的大小,无需对每列进行mergejoin

结果应该是这样的:df_new

Id_new  Id_new  Id_new
8 12 22
16 9 8
21 25 10
10 15 13
29 6 4
22 7 22
30 3 3
11 31 29
32 29 27
12 3 4
14 6 24

任何提示都会很棒,提前致谢!

最佳答案

我认为你需要replaceset_index 创建的系列 :

print (df1)
Id Id.1 Id.2
0 4954733 3929949 515674 <-first value changed for match data
1 2950086 1863885 4269069
2 1241018 3711213 4507609
3 3806276 2035233 4968071
4 4437138 1248817 1167192
5 5468160 4726010 2851685
6 1211786 2604463 5172095
7 2914539 5235788 4130808
8 4730974 5835757 1536235
9 2201352 5779683 5771612
10 3864854 4784259 2928288

df = df1.replace(df2.set_index('Id')['Id_new'])
print (df)
Id Id.1 Id.2
0 1 3929949 515674
1 2950086 1863885 4269069
2 1241018 3711213 4507609
3 3806276 2035233 4968071
4 4437138 1248817 1167192
5 5468160 4726010 2851685
6 1211786 2604463 5172095
7 2914539 5235788 4130808
8 4730974 5835757 1536235
9 2201352 5779683 5771612
10 3864854 4784259 2928288

关于Python 将数据框中的所有值替换为其他数据框中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45611202/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com