Pandas Idxmax在日期值DataFrame上

时间:2017-04-03 16:49:43

标签: python pandas datetime

鉴于此DataFrame:

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()获取值的索引时,我得到一个TypeError:

  

TypeError:float()参数必须是字符串或数字

有没有其他方法可以获取Dataframe的Max值的索引? (或者以任何方式纠正这个?)

3 个答案:

答案 0 :(得分:2)

因为它应该是:

id: page_name
locale: uk_en
----
<div> placeholder placeholder  placeholder placeholder placeholder placeholder</div>
<span>placeholder placeholder placeholder placeholder placeholder placeholder  </span>
<p>Needle</p>

然后返回1.

答案 1 :(得分:1)

您必须指定要从哪个列获取最大值-idx。

要获得maxumum值的idx:

public static AType ExtensionMethods(this AType aType)
{   
    //do something here to aType
    return aType;
}

如果你想得到最大日期使用的idx:

df.Value.idxmax()

答案 2 :(得分: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