2017-05-02 19 views
1

文字列形式の時間値があります。私は列の中で最も新しいか「最大」時間の値を返したいと思います。私はargmaxとidmaxが文字列では機能しないことに気付きました。私は最大値のインデックスを見つけるためにそれらを変換することを避けたいと思います。最大文字列値のインデックスを返す方法はありますか?パンダ:列内の最大文字列値のインデックスを見つける

df['Start_time'].max() 

リターン: '2017年5月2日夜三時47分21秒'

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

リターン: とValueError:float型に文字列を変換できませんでした:「2017年1月26日16時33分:16'

答えて

4

いけないdatetimeに変換したい場合は、max値と比較する列にboolean indexingを使用することができます。

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 ['Start_time'] == df ['Start_time']。max()]。インデックス[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 
関連する問題