在下面的代码中,如何选择列索引列表给出的每一行 data2 的元素,data.idxmax(axis=1)
?
data1 = pd.DataFrame([[1,2], [4,3], [5,6]])
data2 = pd.DataFrame([[10,20], [30,40], [50,60]])
data1.idxmax(axis=1)
结果应为 pd。系列或 pd。[20,30,60]
的数据帧 .
使用lookup
函数:
i = data1.idxmax(axis=1)
data2.lookup(i.index, i.values)
这将为您提供一个包含值的数组。要获得结果作为Series
,只需创建它:
pd.Series(data2.lookup(i.index, i.values))
您可以使用axis = 1
尝试max
,并使用axis = 0
尝试eq
data2[data1.eq(data1.max(1),0)].stack()
Out[193]:
0 1 20.0
1 0 30.0
2 1 60.0
dtype: float64