提问人:Iksy97 提问时间:12/23/2022 最后编辑:JurisIksy97 更新时间:12/24/2022 访问量:38
比较两个数据帧并创建满足某些条件的第三个数据帧
Comparing two Dataframes and creating a third one where certain contions are met
问:
我正在尝试比较两个具有相同列名和索引(非数字)的不同列名和索引,并且我需要为具有相同列名的行获取具有最大值的第三个。dataframe
df
例
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,但不允许我选择正确的值。
提前感谢您:)
答:
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
比较基于数据帧中的值,而不是列名。在这种情况下,列的顺序无关紧要。
下一个:numpy 数组的元素比较
评论