考虑玩具数据框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内存有关吗?
答案 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