Python 从另一个df中参照提取相应的df值
有2个数据帧具有1对1的对应关系。我可以从Python 从另一个df中参照提取相应的df值,python,pandas,Python,Pandas,有2个数据帧具有1对1的对应关系。我可以从df1中的所有列中检索idxmax 输入: 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
df1
中的所有列中检索idxmax
输入:
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']
输出: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
现在我想创建一个包含3列的df
所需输出df
:
ref max value corresponding value
12 78 180
10 76 90
从
df2
中提取相应值的最佳选项是什么?您的主要问题是匹配df1
和df2
之间的列。让我们正确重命名它们,融化两个数据帧,合并并提取:
(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()
)
输出:
ref value_x value_y
variable
value1 12 78 180
value2 10 76 90
嗨,光环。最后一行的输出应为10 76 90….?非常感谢新函数melt和groupby!