2017-02-26 3 views
1

J'ai besoin d'aide. J'ai un index dans une frameframe pandas qui est cette colonne appelée: "Date Device value" (ci-dessous)Analyser un index qui est une série de données

Je voudrais diviser cet index en différentes colonnes, de sorte que j'ai une colonne pour la date (l'index) , une colonne qui indique le jour de la semaine et une colonne pour l'heure.

J'ai essayé d'utiliser différentes méthodes avec strftime pour analyser le temps, mais cela ne fonctionne pas.

C'est un csv que j'ai déjà transformé pour avoir la colonne de date comme index.

Merci beaucoup pour votre aide!

DateDeviceValue      
11/27/15 17:54 On/Off Chaudière_logement 4.0 4.0 536448.0 On 
11/27/15 17:54 On/Off Chaudière_logement 4.0 4.0 536449.0 Off 
11/27/15 17:54 On/Off Chaudière_logement 4.0 4.0 536450.0 On 
11/27/15 17:54 On/Off Chaudière_logement 4.0 4.0 536451.0 Off 
+0

Pourriez-vous formater la section s'il vous plaît code/données? http://stackoverflow.com/help/formatting – tschale

Répondre

0

Créer une nouvelle colonne de l'indice de coulée à un datetime, il peut déduire automatiquement mais je préfère spécifier le format exactement. (vérifiez que ma chaîne de format est correcte)

Votre DateDeviceValue est-elle un index datetime? les valeurs sont identiques?

Si c'est d'essayer cette

df['Time'],df['Date']= df.index.apply(lambda x:x.time()), df.index.apply(lambda x:x.date()) 

autre essayer cette

df['Time'],df['Date']= df['dt_col'].apply(lambda x:x.time()), df['dt_col'].apply(lambda x:x.date()) 
0

@Kickaha a répondu à la même chose, je voudrais juste ajouter plus à lui à la façon de démarrer.

Assurez-vous, lors de la lecture du fichier csv, d'analyser la colonne DateDeviceValue.

df = pd.read_csv("foo.csv", parse_dates=['DateDeviceValue']) 

Créer deux nouvelles colonnes par analyse syntaxique date et l'heure de colonne DateDeviceValue et supprimez-le si vous ne voulez pas plus. Comme vous l'avez dit, vous voulez que la date soit indexée, définissez-la comme index.

df['TIME'] = df['DateDeviceValue'].apply(lambda x: x.time()) 
df['DATE'] = df['DateDeviceValue'].apply(lambda x: x.date()) 
del df['DateDeviceValue'] 
df.set_index('DATE', inplace=True) 

dataframe final ressemble à:

DATE  | A  |   B  | C | D | E | F | TIME 
2015-11-27| On/Off |Chaudière_logement |4.0 |4.0 |536448.0| On |17:54:00 
2015-11-27| On/Off |Chaudière_logement |4.0 |4.0 |536449.0| Off|17:54:00 
2015-11-27| On/Off |Chaudière_logement |4.0 |4.0 |536450.0| On |17:54:00 
2015-11-27| On/Off |Chaudière_logement |4.0 |4.0 |536451.0| Off|17:54:00 
+0

thx une tonne Kickaha. Pouvez-vous m'aider avec autre chose? – chloe

+0

Je voudrais construire un histogramme qui montrerait combien de clics sur on et off sont faits à chaque notre. – chloe

+0

J'ai posté une autre question sur les histogrammes si vous pouvez aider? – chloe