我的第一个数据框是:
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
正如您在第一个和第二个数据框中看到的那样,我们有具有相同值的列但顺序不同(!)(col A 和 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
我想执行您提到的相同过程,但要考虑以下因素:
我想根据“B”的值对“A”列进行排序,即“B”的总和。像这样的东西:
61880 7+3
62646 8+2
...
我用 data.groupby('mm_fid')['vel'].sum()
得到了结果,但之后我无法进行操作。因此,我想创建总和为“B”的唯一列,然后继续您提供的答案!
最佳答案
你需要一个 merge
,然后简单地添加相应的值:
res = df1.merge(df2, left_on='A', right_on='C')
(res.B + res.D).to_frame('result').set_index(res.A)
result
A
61880 15
62646 14
62651 21
62656 20
62783 15
关于python - 基于其他列 pandas 相同值的列的数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55745057/