python pandas:计算矩阵子集中列的argmax

时间:2015-12-11 19:02:20

标签: python numpy pandas argmax

考虑玩具数据框df1和df2,其中df2是df1的子集(不包括第一行)。

将pandas导入为pd 导入numpy为np

df1 = pd.DataFrame({'colA':[3.0,9,45,7],'colB':['A','B','C','D']})
df2 = df1[1:]

现在让我们为每一帧找到colA的argmax

np.argmax(df1.colA) ## result is "2", which is what I expected
np.argmax(df2.colA) ## result is still "2", which is not what I expected.  I expected "1" 

如果我的兴趣矩阵是df2,我该如何解决这个索引问题?这个怪癖与熊猫,numpy还是python内存有关吗?

2 个答案:

答案 0 :(得分:1)

我认为这是由于索引。分配df2时,您可以使用reset_index

df1 = pd.DataFrame({'colA':[3.0,9,45,7],'colB':['A','B','C','D']})
df2 = df1[1:].reset_index(drop=True)

In [464]: np.argmax(df1.colA)
Out[464]: 2

In [465]: np.argmax(df2.colA)
Out[465]: 1

我认为最好使用方法argmax代替np.argmax

In [467]: df2.colA.argmax()
Out[467]: 1

答案 1 :(得分:0)

您需要重置df2的索引:

df2.reset_index(inplace=True, drop=True)
np.argmax(df2.colA)
>> 1