2017-05-02 153 views
1

我有一些字符串格式的時間值。我想在列中返回最近或「最大」時間的值。我注意到argmax和idmax不適用於字符串。我想避免將它們轉換爲找到最大值的索引。有沒有辦法返回最大字符串值的索引?熊貓:在列中查找最大字符串值的索引

df['Start_time'].max() 

回報: '2017年5月2日15點47分21秒'

df.loc[df['Start_time'].idxmax()] 

回報: ValueError異常:無法將字符串轉換爲float:「2017年1月26日16點33分:16'

回答

4

如果不想轉換爲datetime,您可以使用boolean indexingmax值比較列:

print (df[df['Start_time'] == df['Start_time'].max()]) 

而對於指數有可能使用:

df.index[df['Start_time'] == df['Start_time'].max()][0] 

或者:

df[df['Start_time'] == df['Start_time'].max()].index[0] 
+1

謝謝你的作品。這隻返回索引值:df [df ['Start_time'] == df ['Start_time'] .max()]。index [0] – sparrow

+0

@sparrow - 是的,正好。我添加它來回答類似的解決方案。 – jezrael

1

來源DF:

In [60]: df 
Out[60]: 
      Start_time 
0 2017-05-01 16:16:16 
1 2017-05-02 15:47:21 
2 2017-05-01 10:10:10 

解決方案1:

In [61]: df.iloc[df['Start_time'].values.argmax()] 
Out[61]: 
Start_time 2017-05-02 15:47:21 
Name: 1, dtype: object 

解決方案2:

In [62]: df.loc[pd.to_datetime(df['Start_time']).idxmax()] 
Out[62]: 
Start_time 2017-05-02 15:47:21