gpt4 book ai didi

python - 将数据从一个 pandas DataFrame 传递到另一个的最有效方法

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:49 26 4
gpt4 key购买 nike

我试图找到一种更有效的方法,通过迭代行来将信息从一个 DataFrame 传输到另一个 DataFrame。我有 2 个 DataFrame,一个在一列中包含名为“id”的唯一值,在另一列中包含一个名为“region”的值:

dfkey = DataFrame({'id':[1122,3344,3467,1289,7397,1209,5678,1792,1928,4262,9242],
'region': [1,2,3,4,5,6,7,8,9,10,11]})

id region
0 1122 1
1 3344 2
2 3467 3
3 1289 4
4 7397 5
5 1209 6
6 5678 7
7 1792 8
8 1928 9
9 4262 10
10 9242 11

...另一个 DataFrame 包含这些相同的 ID,但现在有时会重复且没有任何顺序:

df2 = DataFrame({'id':[1792,1122,3344,1122,3467,1289,7397,1209,5678],
'other': [3,2,3,4,3,5,7,3,1]})

id other
0 1792 3
1 1122 2
2 3344 3
3 1122 4
4 3467 3
5 1289 5
6 7397 7
7 1209 3
8 5678 1

我想使用 dfkey DataFrame 作为键来输入 df2 DataFrame 中每个 id 的区域。我已经找到了使用 iterrows() 执行此操作的方法,但它涉及嵌套循环:

df2['region']=0
for i, rowk in dfkey.iterrows():
for j, rowd in df2.iterrows():
if rowk['id'] == rowd['id']:
rowd['region'] = rowk['region']

id other region
0 1792 3 8
1 1122 2 1
2 3344 3 2
3 1122 4 1
4 3467 3 3
5 1289 5 4
6 7397 7 5
7 1209 3 6
8 5678 1 7

我拥有的实际 dfkey 有 43K 行和 df2 600K 行。该代码现在已经运行了一个小时,所以我想知道是否有更有效的方法...

最佳答案

pandas.merge 可能是另一种解决方案。

newdf = pandas.merge(df2, dfkey, on='id')

In [22]: newdf
Out[22]:
id other region
0 1792 3 8
1 1122 2 1
2 1122 4 1
3 3344 3 2
4 3467 3 3
5 1289 5 4
6 7397 7 5
7 1209 3 6
8 5678 1 7

关于python - 将数据从一个 pandas DataFrame 传递到另一个的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40413664/

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