2017-10-18 22 views
0

Voilà mes données:Comment utiliser pandas.Series.dt.strftime peut faire une cartographie horaire?

device_create_at    
136 2014-08-27 17:29:23    
245 2015-09-06 15:46:00    
257 2014-09-29 22:26:34    
258 2014-11-05 13:02:18  

Voici ma sortie attendue

device_create_at    device_create_hour 
136 2014-08-27 17:29:23   2014-08-27 17 
245 2015-09-06 15:46:00   2015-09-06 15 
257 2014-09-29 22:26:34   2014-09-29 22 
258 2014-11-05 13:02:18   2014-11-05 13 

Pour autant que je sache, pandas.Series.dt.strftime peut faire la cartographie hebdomadaire, le code est comme ça

sheet2['device_create_week'] = sheet2['device_create_at'].dt.strftime('%Y-%V') 

Ils utilisent %V pour la semaine non %W, j'essaie de faire de cette heure

sheet2['device_create_hour'] = sheet2['device_create_at'].dt.strftime('%Y-%M-%D-%H') 

Ce travail est doeesn't

+0

S'il vous plaît être un peu plus précis avec ce que vous voulez. Commencez avec vos données actuelles et le résultat attendu. Ce n'est pas utile atm. –

+0

Merci de me le rappeler, j'ai déjà mis à jour la question –

Répondre

1
s = df.device_create_at.dt.strftime('%Y-%m-%d %H') 
print(s) 
136 2014-08-27 17 
245 2015-09-06 15 
257 2014-09-29 22 
258 2014-11-05 13 
Name: device_create_at, dtype: object 

Notez que le format est %Y-%m-%d %H avec petit m et petit d.

+0

OKm ma suggestion est correcte. Le problème sur mes données, message d'erreur 'Peut seulement utiliser .dt accessor avec des valeurs datetimelike' –

+0

@NabihIbrahimBawazir L'hypothèse fondamentale avec cette méthode était que votre colonne est une colonne datetime. Si ce n'est pas le cas, vous devrez utiliser 'pd.to_datetime' et le convertir:' df.device_create_at = pd.to_datetime (df.device_create_at) ' –

+0

oui, j'ai déjà lu ceci ici https://stackoverflow.com/questions/33365055/attributeerror-can-only-use-dt-accesseur-with-datetimelike-values, et essaye 'pd.to_datetime (df ['device_create_at'], coerce = True)' et aucun appel ne contraint coercition –