2017-01-11 3 views
0

J'ai dataframe avec des colonnes commetri dataframe par nom de colonne en gardant 3 premières colonnes comme il est

[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'] 

Je veux trier les colonnes, mais seulement qui sont 'Url produit. Je veux la sortie

[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'] 

Comment le faire.

+0

Et qu'avez-vous essayé? –

+0

Aussi, pourquoi auriez-vous ce qui semble être des dates en tant que noms de colonnes? Et d'où vient le «hash»? –

Répondre

1

Je pense que vous avez besoin jeter dates colonnes to_datetime, sort_values et si besoin dates utilisation date:

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

Exemple:

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] 

Et si besoin même format ajouter 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]