gpt4 book ai didi

python - 如何根据列的值将小型 pandas.dataframe 融合为较大的 pandas.dataframe ?

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

我有两个 pandas.dataframe df1 和 df2:

>>>import pandas as pd
>>>import numpy as np
>>>from random import random
>>>df1=pd.DataFrame({'x1':range(10), 'y1':np.repeat(0,10).tolist()})
>>>df2=pd.DataFrame({'x2':range(0,10,2), 'y2':[random() for _ in range(5)]})
>>>df1
x1 y1
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
>>>df2
x2 y2
0 0 0.075922
1 2 0.606703
2 4 0.272918
3 6 0.842641
4 8 0.576636

现在我想将 df2 融合到 df1 中。也就是说,当df1中x1的值等于df2中x2的值时,我想将df1中y1的值更改为df2中y2的值。我需要的最终结果如下:

>>>df1
x1 y1
0 0 0.075922
1 1 0
2 2 0.606703
3 3 0
4 4 0.272918
5 5 0
6 6 0.842641
7 7 0
8 8 0.576636
9 9 0

虽然我可以使用以下代码来获得上述结果:

>>> for i in range(df1.shape[0]):
... for j in range(df2.shape[0]):
... if df1.iloc[i,0] == df2.iloc[j,0]:
... df1.iloc[i,1]=df2.iloc[j,1]
...

我认为必须有更好的方法来实现这一目标。你知道它们是什么吗?预先感谢您。

最佳答案

您可以使用df.update来更新您的df1,例如:

df1.update({'y1': df2.set_index('x2')['y2']})

给你:

   x1        y1
0 0 0.075922
1 1 0.000000
2 2 0.606703
3 3 0.000000
4 4 0.272918
5 5 0.000000
6 6 0.842641
7 7 0.000000
8 8 0.576636
9 9 0.000000

关于python - 如何根据列的值将小型 pandas.dataframe 融合为较大的 pandas.dataframe ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52364016/

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