2016-12-07 63 views
0

我有一個熊貓時間序列ts = pd.TimeSeries(np.random.normal(0, 1, 100)),我想只選擇第一個q-1分位數中的樣本。熊貓選擇q分位數據

我能夠得到分位數間隔:pd.qcut(ts, 10)但我怎樣才能只選擇前9個分位數的樣本?

回答

1

使用在qcut()功能labels=False選項。

ts = pd.DataFrame(pd.TimeSeries(np.random.normal(0, 1, 100))) 
ts[1] = pd.qcut(ts[0], 10, labels=False) 
ts.loc[ts[1] < 9] 
0

您可以用整數標記您的分位數,其加入到數據幀,寫一個布爾表達式來選擇:

quantiles = pd.qcut(ts, 10, labels=range(10)) 
quantiles.name = 'quantiles' 
df = pd.DataFrame(ts).join(quantiles) 
df[df['quantiles'] < 9] 
0

pd.TimeSeries已棄用。只需使用pd.Series

ts = pd.Series(np.random.normal(0, 1, 100)) 
ts[pd.qcut(ts, 10, labels=False) < 9]