我有一些字符串格式的时间值。我想在列中返回最近或“最大”时间的值。我注意到argmax和idmax对字符串不起作用。我想避免转换它们来找到最大值的索引。有没有办法返回最大字符串值的索引?
df['Start_time'].max()
返回: '2017-05-02 15:47:21'
df.loc[df['Start_time'].idxmax()]
返回: ValueError:无法将字符串转换为float:'2017-01-26 16:33:16'
答案 0 :(得分:4)
如果您不想转换为datetime
,则可以使用boolean indexing
将列与max
值进行比较:
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 :(得分:2)
来源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