Eh, (Ben bunu biraz daha güzel yapar düşünüyorum) uygulamak ve onu vectorized do önleyebilirsiniz: Elbette
print df
date x1
0 2010-01-01 00:00:00 10
1 2010-02-01 00:00:00 10
2 2010-03-01 00:00:00 10
3 2010-04-01 00:00:00 10
4 2010-04-01 00:00:00 5
5 2010-05-01 00:00:00 5
df['date'] = (pd.to_datetime(df['date']).values.astype('datetime64[M]')
- np.timedelta64(1,'M'))
print df
date x1
0 2009-12-01 10
1 2010-01-01 10
2 2010-02-01 10
3 2010-03-01 10
4 2010-03-01 5
5 2010-04-01 5
, pandalar hep buna dönüştürür beri tarih hala datetime64[ns]
olacaktır.
Düzenleme: yerine önceki ayın uzaklaştırmak önceki ayın sonuna istedi varsayalım:
df['date'] = (pd.to_datetime(df['date']).values.astype('datetime64[M]')
- np.timedelta64(1,'D'))
print df
date x1
0 2009-11-30 10
1 2009-12-31 10
2 2010-01-31 10
3 2010-02-28 10
4 2010-02-28 5
5 2010-03-31 5
Düzenleme: Jeff daha pandonic yolu tarih bir hale getirmektir işaret DatetimeIndex
ve bir Tarih Ofseti kullanın. Yani böyle bir şey:
df['date'] = pd.Index(df['date']).to_datetime() - pd.offsets.MonthBegin(1)
print df
date x1
0 2009-12-01 10
1 2010-01-01 10
2 2010-02-01 10
3 2010-03-01 10
4 2010-03-01 5
5 2010-04-01 5
Veya ay sonları:
Bu great.Much ') (uygulamak o kadar' datetime64 [M] 'kullanmak mümkün olup olmadığını biliyor musunuz' daha hızlıdır ayın sonu yerine başlangıcını bulmak? – JAB
Evet, düzenlememe bakın. –
daha pandonik bir yol bir dizin olarak ele almak ve uygun ofset ile geri alma kullanın burada görmek: http://pandas-docs.github.io/pandas-docs-travis/timeseries.html#dateoffset-objects – Jeff