2015-03-05 8 views
5

Ich habe eine Reihe in datetime Format, und müssen den Tag zu 1 für jeden Eintrag ändern. Ich habe an zahlreiche einfache Lösungen gedacht, aber keine von ihnen funktioniert für mich. Vorerst funktioniert das einzige, was tatsächlich istPandas: Change Tag

  • die Serie als Index
  • Abfrage Monat und Jahr aus dem Index gesetzt
  • Rekonstruieren eine neue Zeitreihe mit Jahr, Monat und 1

Es kann nicht wirklich so kompliziert sein, oder? Es gibt einen Monatsanfang, aber leider ist das ein offset, das ist hier nutzlos. Es scheint keine set() Funktion für die Methode zu geben, und noch weniger Funktionalität, während die Reihe eine Spalte und nicht (ein Teil davon) der Index selbst ist.

Die einzige verwandte Frage war this, aber der dort verwendete Trick ist hier nicht anwendbar.

Antwort

8

können Sie verwenden .apply und datetime.replace, zB:

import pandas as pd 
from datetime import datetime 

ps = pd.Series([datetime(2014, 1, 7), datetime(2014, 3, 13), datetime(2014, 6, 12)]) 
new = ps.apply(lambda dt: dt.replace(day=1)) 

Gibt:

0 2014-01-01 
1 2014-03-01 
2 2014-06-01 
dtype: datetime64[ns]