2017-04-03 70 views
1

鉴于这一数据框:大熊猫Idxmax的日期值数据帧

import matplotlib.pyplot as plt 
import pandas as pd 
df = pd.DataFrame({'Date':['20/03/17 10:30:34','20/03/17 10:31:24','20/03/17 10:34:34'], 
        'Value':[4,7,5]}) 

df['Date'] = pd.to_datetime(df.Date) 
df 
Out[53]: 
       Date Value 
0 2017-03-20 10:30:34  4 
1 2017-03-20 10:31:24  7 
2 2017-03-20 10:34:34  5 

林正在试图提取最大值及其索引。我可以df.Value.max()得到的最大值,但是当我用df.idxmax()获得指数FO的价值我得到一个类型错误:

TypeError: float() argument must be a string or a number

是否有任何其他方式来获得数据帧的最大值的指数? (或任何办法来纠正这一个?)

回答

2

因为它应该是:

df.Value.idxmax() 

然后返回1.

+0

上帝,我AMB这么愚蠢的,感谢您的快速答复。 – whiteTea

+0

'df.idxmax()'仍然可以工作,不会引发错误。 – pansen

1

你必须从你想获得最大的价值IDX哪一列指定。

要获得maxumum值使用的IDX:

df.Value.idxmax() 
,如果你想获得最大的日期使用的IDX

df.Date.idxmax() 
1

如果你只关心Value列,你可以使用方法:

df.Value.idxmax() 
>>> 1 

但是,奇怪的是,它在两列上都失败df.idxmax()如下面的作品,太:

df.Date.idxmax() 
>>> 2 

df.idxmax()也适用于其他一些虚拟数据:

dummy = pd.DataFrame(np.random.random(size=(5,2))) 
print(dummy)  

    0   1 
0 0.944017 0.365198 
1 0.541003 0.447632 
2 0.583375 0.081192 
3 0.492935 0.570310 
4 0.832320 0.542983 

print(dummy.idxmax()) 

0 0 
1 3 
dtype: int64