我的第一个数据框是:

df1 =


    A        B
    61880    7
    62646    8
    62651    9
    62656    10
    62783    11


我的第二个数据帧是:

df2 =

    C        D
    62783    2
    62646    3
    61880    4
    62656    5
    62651    6


正如您在第一个和第二个数据帧中看到的那样,我们的列具有相同的值,而bun的顺序不同(!)(col A and col C)

所需的输出是:
从具有相同“ A”和“ C”值的行中获取所有“ B”和“ D”值,并对它们进行数学运算(例如,B除以D)。

例:
2 + 11(在“ A”和“ C”列中,它们的值都为62783)

加成!编辑!

非常感谢!我遇到了另一个我忘记提及的问题:

有时,在“ A”列中,我具有相同的值,例如,我们可以两次看到“ 61880”,依此类推:

df1 =

A        B
*61880*    7
**62646**    8
62651    9
62656    10
62783    11
*61880*    3
**62646**    2


我要通过考虑以下因素,执行与您提到的BUT相同的过程:

我想基于“ B”的值,即“ B”的总和对列“ A”进行排序。就像是:

 61880    7+3
 62646    8+2
 ...


我用data.groupby('mm_fid')['vel'].sum()取得了结果,但是此后我无法进行操作。因此,我想创建一个总和为“ B”的唯一列,然后继续提供您提供的答案!

最佳答案

我相信您需要DataFrame.addDataFrame.set_index

df3 = df1.set_index('A')['B'].add(df2.set_index('C')['D'], fill_value=0).reset_index()
df3.columns = ['A','B']
print (df3)
       A   B
0  61880  11
1  62646  11
2  62651  15
3  62656  15
4  62783  13


另一种解决方案是将concat与聚集sum一起使用:

d = {'C':'A', 'D':'B'}
df3 = pd.concat([df1, df2.rename(columns=d)]).groupby('A', as_index=False)['B'].sum()
print (df3)
       A   B
0  61880  11
1  62646  11
2  62651  15
3  62656  15
4  62783  13

10-02 08:13
查看更多