2014-09-16 41 views
5

GroupBy tarihiPandalar I (dataframe tarihi itibari ile dizine değildir) sütun bir durumdaki tarihi olan bir tablo aralığı

bugüne kadar grubuna tablo isteyen belirli tarihler bir kova halinde gruplanır. Bu kümülatif olmalı, daha sonra kovalar daha önceki olanlardan tüm veri noktalarını içerecektir. Burada tabloda birkaç datapoints bir örnek

date_rng = date_range('28/02/2010','31/08/2014',freq='3M') 

:

İşte göre gruplandırmak gereken Daterange nesne var

df_raw.head() 
    Ticker FY Periodicity Measure  Val    Date 
0 BP9DL90 2009   ANN  CPX 1000.00 2008-03-31 00:00:00 
1 BP9DL90 2010   ANN  CPX 600.00 2009-03-25 00:00:00 
2 BP9DL90 2010   ANN  CPX 600.00 2009-09-16 00:00:00 
3 BP9DL90 2011   ANN  CPX 570.00 2010-03-17 00:00:00 
4 BP9DL90 2011   ANN  GRM 57.09 2010-09-06 00:00:00 

[5 rows x 6 columns] 

Herhangi giriş çok takdir edilecektir.

Teşekkür

tarih istediğiniz tarih aralığında ise 1 döndüren bir işlev oluşturun ve sonra göre gruplandırmak için kullanabilir
+0

O 'gruplama gibi gelmiyor '(pandalar anlamında) burada doğru yaklaşımdır. Bu karşılıklı olarak özel bir işlemdir. Aslında ne yapmaya çalışıyorsun? Sütunlardan herhangi birini birleştirmek isterseniz, tarihe göre endeksleme yapmayı düşünebilirsiniz. "Toplam çalışma" almak için cumsum() 'veya' pd.rolling_apply() ', – Luciano

+0

Verileri belirli ölçütlere göre filtrelemek istiyorum. Bu kriterlerden biri "x tarihinden itibaren" dir. Verileri toplamak istemiyorum. Pandalar grubunun karşılıklı olarak münhasır olduğunu bilmiyordum - muhtemelen ana tablonun alt kümelerini elle oluşturmak için döngüler kurması gerekecek. – user3294195

+0

buna dayanarak, ilk olarak verileri tarih olarak indeks olarak okumaya çalışacağım (bkz. 'Index_col' ve' parse_dates' pd.read_csv() ') kodları, daha sonra aşağıdaki gibi kolayca döngü yapabilirsiniz:' d için date_range: print (df_raw [: d]) '(alt) tablosunu güncelleyecek d. – Luciano

cevap

1

:

# convert date column do datetime type 
df['Date']=pd.to_datetime(df['DATE']), format='%d-%m-%Y %H:%M:%S' 

def is_in_range(x): 
    if x['Date'] > '28-02-2010 00:00:00' and x['Date'] < '31-08-2014 00:00:00': 
     return 1 
    else: 
     return 0 

data.groupby(df['date'].map(is_in_range)) 
+0

Teşekkürler ... Aslında, date_rng'deki her öğeden daha az tarihe sahip öğeleri temel alan gruplar oluşturmayı düşünüyorum. Yani date_rng'de eleman başına bir kova olurdu. – user3294195

+0

Tamam, anladım, pandalar grubunda böyle kümülatif gruplara sahip olabileceğinizi sanmıyorum. – yemu