python - 基于其他列 pandas 相同值的列的数学运算

标签 python pandas dataframe

我的第一个数据框是:

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/

相关文章:

Python - 发送数据包发出错误 - Minecraft Packets

python - 在 keras 中构建简单线性模型时出现“数组不是 python 函数”错误

python - tkinter : Fill scrollable canvas with frame content

python-3.x - 将每个组乘以 python groupby 中列表中的特定值

Python - 根据另一列中的值获取两列的最大值或最小值?

r - 根据不同dfs的列名为列提供固定顺序

python - 重试代码时很好的异常处理

python - 我如何使用列表理解创建这个嵌套列表?

python - Pandas 用同一行中的其他列值替换数据框值

python - 如何像在 SQL 中一样使用 'in' 和 'not in' 过滤 Pandas 数据帧