2016-08-18 6 views
2

Я новичок в Pandas и хочу сортировать столбец, содержащий строки, и генерировать числовое значение, чтобы однозначно идентифицировать строку. Мой кадр данных выглядит следующим образом:Сортировка столбца, содержащего строку в Pandas

df = pd.DataFrame({'key': range(8), 'year_week': ['2015_10', '2015_1', '2015_11', '2016_9', '2016_10','2016_3', '2016_9', '2016_10']}) 

Сначала мне нравится сортировать 'year_week' колонки организовать в порядке возрастания (2015_1, 2016_9, '2016_9', 2016_10, 2016_11, 2016_3, 2016_10, 2016_10), а затем генерировать числовое значение для каждой уникальных 'year_week' строки.

ответ

3

Вы можете сначала конвертировать to_datetime столбец year_week, а затем отсортировать его по sort_values и последнего использования factorize:

df = pd.DataFrame({'key': range(8), 'year_week': ['2015_10', '2015_1', '2015_11', '2016_9', '2016_10','2016_3', '2016_9', '2016_10']}) 

#http://stackoverflow.com/a/17087427/2901002 
df['date'] = pd.to_datetime(df.year_week + '-0', format='%Y_%W-%w') 
#sort by column date 
df.sort_values('date', inplace=True) 
#create numerical values 
df['num'] = pd.factorize(df.year_week)[0] 
print (df) 
    key year_week  date num 
1 1 2015_1 2015-01-11 0 
0 0 2015_10 2015-03-15 1 
2 2 2015_11 2015-03-22 2 
5 5 2016_3 2016-01-24 3 
3 3 2016_9 2016-03-06 4 
6 6 2016_9 2016-03-06 4 
4 4 2016_10 2016-03-13 5 
7 7 2016_10 2016-03-13 5 
+0

Большое спасибо! он решил мою проблему – Nadne

Смежные вопросы