我的第一个数据框是:
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.add
和DataFrame.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