按年份排序日期列表& 25美分硬币

时间:2018-04-20 15:22:13

标签: python python-3.x list pandas sorting

假设我有一个清单:

Date = ['2013-Q4','2015-Q1','2017-Q2','2018-Q1']

如何按时间顺序对其进行排序,以便:

svgMap.append("path")
  .attr("class", "reg_contour")
  .datum(topojson.mesh(fr[0], fr[0].objects.reg_GEN_WGS84_UTF8, function(a, b) { return a !== b; }))
  .attr("d", path);

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

这些是时期。您需要生成PeriodIndex,然后调用sort_values

p = pd.PeriodIndex(['2013-Q4','2015-Q1','2017-Q2','2018-Q1'], freq='Q')    
p.sort_values() # p = p.sort_values() # np.sort(p)

PeriodIndex(['2013Q4', '2015Q1', '2017Q2', '2018Q1'], dtype='period[Q-DEC]', freq='Q-DEC')

答案 2 :(得分:2)

您可以pandas.to_datetime使用sorted

import pandas as pd

date = ['2015-Q1', '2013-Q4', '2017-Q2', '2018-Q1']

res = sorted(date, key=pd.to_datetime)

结果:

print(res)

['2013-Q4' '2015-Q1' '2017-Q2' '2018-Q1']

答案 3 :(得分:1)

import pandas as pd    
pd.to_datetime(Date).sort_values().to_period('Q')

输出:

PeriodIndex(['2013Q4', '2015Q1', '2017Q2', '2018Q1'], dtype='period[Q-DEC]', freq='Q-DEC')

或者像这样,如果你想要它回到字符串:

pd.to_datetime(Date).sort_values().to_period('Q').strftime('%Y-Q%q')
array(['2013-Q4', '2015-Q1', '2017-Q2', '2018-Q1'], dtype='<U6')