2017-01-11 2 views
0

меня dataframe с колоннами, каксортировка dataframe по имени столбца сохраняя первые 3 колонки, как это

[u'Instructor Name', u'Product Name', u'Product Url', u' 2016.12.03', 
u' 2016.12.05', u' 2016.12.01', u' 2016.12.12', u' 2016.12.16', 
u'2016.12.15', u' 2016.12.13', u' 2016.12.10', u' 2016.12.06', 
u'2016.12.14',u'2016.12.08', u' 2016.12.07', u' 2016.12.18', 
u'2016.12.11', u' 2016.12.04', u'2016.12.09', u' 2016.12.02', u' 2016.12.17'] 

Я хочу, чтобы отсортировать столбцы, но только, которые находятся в «URL продукта». Я хочу получить

[u'Instructor Name', u'Product Name', u'Product Url', 
     u' 2016.12.01', u' 2016.12.02', u' 2016.12.03', u' 2016.12.04', 
     u' 2016.12.05', u' 2016.12.06', u' 2016.12.07', u' 2016.12.08', 
     u' 2016.12.09', u' 2016.12.10', u' 2016.12.11', u' 2016.12.12', 
     u' 2016.12.13', u' 2016.12.14', u' 2016.12.15', u' 2016.12.16', 
     u' 2016.12.17', u' 2016.12.18', u' 2016.12.19'] 

Как это сделать.

+0

И что ты пробовал? –

+0

Кроме того, почему у вас есть то, что представляется как имена столбцов? И откуда взялся «хэш»? –

ответ

1

Я думаю, что нужно бросить dates столбцы to_datetime, sort_values и при необходимости dates использования date:

df.columns = df.columns[:3].tolist() + 
      (pd.to_datetime(df.columns[3:], format='%Y.%m.%d')).sort_values().date.tolist() 

Пример:

cols = [u'Instructor Name', u'Product Name', u'Product Url', u' 2016.12.03', u' 2016.12.05', 
     u' 2016.12.01', u' 2016.12.12', u' 2016.12.16', u' 2016.12.15', u' 2016.12.13', 
     u' 2016.12.10', u' 2016.12.06', u'2016.12.14',u'2016.12.08', u' 2016.12.07', 
     u' 2016.12.18', u' 2016.12.11', u' 2016.12.04', u'2016.12.09', 
u' 2016.12.02', u' 2016.12.17'] 

df = pd.DataFrame(columns=cols) 
print (df) 
Empty DataFrame 
Columns: [Instructor Name, Product Name, Product Url, 
      2016.12.03, 2016.12.05, 2016.12.01, 2016.12.12, 2016.12.16, 2016.12.15, 
      2016.12.13, 2016.12.10, 2016.12.06, 2016.12.14, 2016.12.08, 2016.12.07, 
      2016.12.18, 2016.12.11, 2016.12.04, 2016.12.09, 2016.12.02, 2016.12.17] 

Index: [] 

[0 rows x 21 columns] 

df.columns = df.columns[:3].tolist() + 
      (pd.to_datetime(df.columns[3:], format='%Y.%m.%d')).sort_values().date.tolist() 

print (df) 
Empty DataFrame 
Columns: [Instructor Name, Product Name, Product Url, 
      2016-12-01, 2016-12-02, 2016-12-03, 2016-12-04, 2016-12-05, 2016-12-06, 
      2016-12-07, 2016-12-08, 2016-12-09, 2016-12-10, 2016-12-11, 2016-12-12, 
      2016-12-13, 2016-12-14, 2016-12-15, 2016-12-16, 2016-12-17, 2016-12-18] 
Index: [] 

[0 rows x 21 columns] 

И если нужно такой же формат добавить strftime:

df.columns = df.columns[:3].tolist() + 
      (pd.to_datetime(df.columns[3:], format='%Y.%m.%d')).sort_values().strftime('%Y.%m.%d').tolist() 

print (df) 
Empty DataFrame 
Columns: [Instructor Name, Product Name, Product Url, 
      2016.12.01, 2016.12.02, 2016.12.03, 2016.12.04, 2016.12.05, 2016.12.06, 
      2016.12.07, 2016.12.08, 2016.12.09, 2016.12.10, 2016.12.11, 2016.12.12, 
      2016.12.13, 2016.12.14, 2016.12.15, 2016.12.16, 2016.12.17, 2016.12.18] 
Index: [] 

[0 rows x 21 columns] 
Смежные вопросы