Yöntemi, here'dan çok indeksli bir veri çerçevesine uyguladığınızda, işe yaramıyor gibi görünmektedir. endekslemeBirden çok dizinli veri çerçevesinden tamamlanmamış mevsimleri kaldırma (pandalar)
için 'Yılın' sütunu oluşturun uygula işlevinidf['Season'] = df.apply(get_season, axis=1)
import pandas as pd
import numpy as np
dates = pd.date_range('20070101',periods=3200)
df = pd.DataFrame(data=np.random.randint(0,100,(3200,1)), columns =list('A'))
df['A'][5,6,7, 8, 9, 10, 11, 12, 13] = np.nan #add missing data points
df['date'] = dates
df = df[['date','A']]
datetime indeksi
def get_season(row):
if row['date'].month >= 3 and row['date'].month <= 5:
return '2'
elif row['date'].month >= 6 and row['date'].month <= 8:
return '3'
elif row['date'].month >= 9 and row['date'].month <= 11:
return '4'
else:
return '1'
için sezon işlevini uygulayın:
bir veri çerçevesi atın Her sezon
count = df.groupby(level=[0, 1]).count()
Bırak içinde
Yıl Çok endeks ve Sezon
df = df.set_index(['Year', 'Season'], inplace=False)
Sayım veri noktası içlerinde az 75 gün mevsimler
count = count.drop(count[count.A < 75].index)
bir değişken oluşturma Mevsimler için 75 günden fazla olan süre
isin işlevinin kullanılmasıcomplete = count[count['A'] >= 75].index
Ben
df = df.isin(complete)
df
Her değer false çıkageldi 'A' geçerli fazla veri 75 gün var her mevsim seçmek isterken, her şey için yanlış geliyor, ve Nedenini göremiyorum.
Umarım bu yeterince kısadır, bunu mevsimi kullanarak bir çoklu indekste çalışmak için buna ihtiyacım var. Çoklu dizin here
df3 = df.reset_index().groupby('Year').apply(lambda x: x.set_index('Season').reindex(count,method='pad'))
DÜZENLEME 2
(aynı zamanda boş dataframe üreten) çalışmıyor yeniden dizin göre
DÜZENLEME
diğer bir yöntem, aynı zamanda, bu
çalıştıseasons = count[count['A'] >= 75].index
df = df[df['A'].isin(seasons)]
Yine boş çıktı
Ben 'yağmur' 'A' olması gerektiğini düşünüyorum? – JohnE
Böyle bir şey yapmak istediğinden şüpheleniyorum? 'say = df [df.A> 75] .grup (seviye = [0, 1]). count()'. Bu size 75 gün süre veriyor. Bundan sonra, birleştirme veya birleştirme kullanmak istediğinizden şüpheliyim, değil. – JohnE
@John Evet, 'A' olmalı - bu konuda üzgünüm. – Pad