按索引列表为每一行选择熊猫列



在下面的代码中,如何选择列索引列表给出的每一行 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

最新更新