以小时天月格式对数据帧进行排序

Sorting data frames with time in hours days months format

我有一个数据框,列中有时间但没有排序,我想按升序排序,有人可以建议任何直接函数或数据框排序时间的代码吗?

我的输入数据框:

Time data1
1 month 43.391588
13 h 31.548372
14 months 41.956652
3.5 h 31.847388

预期数据帧:

Time data1
3.5 h 31.847388
13 h 31.847388
1 month 43.391588
14 months 41.956652

首先,您必须断言数据框中的数据类型。 这将指示您可以如何进行。 df.dtypes 或您的情况 df.index.dtypes 。 排序数据帧的首选选项是 df.sort_values()

您需要先将单位替换为数字 Series.replace and then convert to numeric by pandas.eval, last use this column for sorting by DataFrame.sort_values:

d = {' months': '*30*24', ' month': '*30*24', ' h': '*1'}
df['sort'] = df['Time'].replace(d, regex=True).map(pd.eval)

df = df.sort_values('sort')
print (df)
        Time      data1     sort
3      3.5 h  31.847388      3.5
1       13 h  31.548372     13.0
0    1 month  43.391588    720.0
2  14 months  41.956652  10080.0