[英]Extract corresponding df value with reference from another df
There are 2 dataframes with 1 to 1 correspondence.有 2 个数据帧,一一对应。 I can retrieve an idxmax
from all columns in df1
.我可以从df1
所有列中检索一个idxmax
。
Input:输入:
df1 = pd.DataFrame({'ref':[2,4,6,8,10,12,14],'value1':[76,23,43,34,0,78,34],'value2':[1,45,8,0,76,45,56]})
df2 = pd.DataFrame({'ref':[2,4,6,8,10,12,14],'value1_pair':[0,0,0,0,180,180,90],'value2_pair':[0,0,0,0,90,180,90]})
df=df1.loc[df1.iloc[:,1:].idxmax(), 'ref']
Output: df1, df2 and df输出:df1、df2 和 df
ref value1 value2
0 2 76 1
1 4 23 45
2 6 43 8
3 8 34 0
4 10 0 76
5 12 78 45
6 14 34 56
ref value1_pair value2_pair
0 2 0 0
1 4 0 0
2 6 0 0
3 8 0 0
4 10 180 90
5 12 180 180
6 14 90 90
5 12
4 10
Name: ref, dtype: int64
Now I want to create a df which contains 3 columns现在我想创建一个包含 3 列的 df
Desired Output df
:期望输出df
:
ref max value corresponding value
12 78 180
10 76 90
What are the best options to extract the corresponding values from df2
?从df2
提取相应值的最佳选择是什么?
Your main problem is matching the columns between df1
and df2
.您的主要问题是匹配df1
和df2
之间的列。 Let's rename them properly, melt both dataframes, merge and extract:让我们正确重命名它们,融合两个数据框,合并和提取:
(df1.melt('ref')
.merge(df2.rename(columns={'value1_pair':'value1',
'value2_pair':'value2'})
.melt('ref'),
on=['ref', 'variable'])
.sort_values('value_x')
.groupby('variable').last()
)
Output:输出:
ref value_x value_y
variable
value1 12 78 180
value2 10 76 90
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.