以小时天月格式对数据帧进行排序
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
我有一个数据框,列中有时间但没有排序,我想按升序排序,有人可以建议任何直接函数或数据框排序时间的代码吗?
我的输入数据框:
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