比较两个数据帧并创建满足某些条件的第三个数据帧

Comparing two Dataframes and creating a third one where certain contions are met

提问人:Iksy97 提问时间:12/23/2022 最后编辑:JurisIksy97 更新时间:12/24/2022 访问量:38

问:

我正在尝试比较两个具有相同列名和索引(非数字)的不同列名和索引,并且我需要为具有相同列名的行获取具有最大值的第三个。dataframedf

df1=

|  | col_1 | col2 | col-3 |

| rft_12312 | 4 | 7 | 4 |

| rft_321321 | 3 | 4 | 1 |
df2=

|  | col_1 | col2 | col-3 |

| rft_12312 | 7 | 3 | 4 |

| rft_321321 | 3 | 7 | 6 |

所需结果

|  | col_1 | col2 | col-3 |

| rft_12312 | 7 (because df2.value in this \[row :column\] \>df1.value) | 7 | 4 |


| rft_321321 | 3(when they are equal doesn't matter from which column is the value) | 7 | 6 |

我已经尝试过pd.update,filter_func定义为:

Def filtration_function(Val1,Val2): 如果 val1 >= val2: 返回 val1 还: 返回 val2

但不起作用。我需要检查具有相同名称的每列。

还有 pd.compare,但不允许我选择正确的值。

提前感谢您:)

python 数据帧 比较 sklearn-pandas

评论

0赞 Itération 122442 12/23/2022
你好。请正确格式化代码。在这种状态下我们无法读取它;)

答:

0赞 rzz 12/23/2022 #1

我认为一种可能性是使用“组合”。此方法在两个数据帧之间生成元素比较,并返回每个元素的最大值。

例:

import pandas as pd

def filtration_function(val1, val2):
    return max(val1, val2)

result = df1.combine(df2, filtration_function)

我认为方法“where”可以工作:

import pandas as pd

result = df1.where(df1 >= df2, df2)

评论

0赞 Iksy97 12/23/2022
谢谢!这是where功能。但是您知道比较是否基于列的名称(因此顺序很重要还是....)?
0赞 rzz 12/24/2022
比较基于数据帧中的值,而不是列名。在这种情况下,列的顺序无关紧要。