Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从另一个df中参照提取相应的df值_Python_Pandas - Fatal编程技术网

Python 从另一个df中参照提取相应的df值

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

有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,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!