[英]Pandas Pivot Table Subsetting
我的數據透視表如下所示:
Symbol DIA QQQ SPY XLE DIA QQQ SPY XLE DIA QQQ \
Open Open Open Open High High High High Low Low
Date
19930129 NaN NaN 29.083294 NaN NaN NaN 29.083294 NaN NaN NaN
19930201 NaN NaN 29.083294 NaN NaN NaN 29.269328 NaN NaN NaN
19930202 NaN NaN 29.248658 NaN NaN NaN 29.352010 NaN NaN NaN
19930203 NaN NaN 29.372680 NaN NaN NaN 29.662066 NaN NaN NaN
19930204 NaN NaN 29.744748 NaN NaN NaN 29.827430 NaN NaN NaN
Symbol SPY XLE DIA QQQ SPY XLE DIA \
Low Low Close Close Close Close Total Volume
Date
19930129 28.938601 NaN NaN NaN 29.062624 NaN NaN
19930201 29.083294 NaN NaN NaN 29.269328 NaN NaN
19930202 29.186647 NaN NaN NaN 29.331340 NaN NaN
19930203 29.352010 NaN NaN NaN 29.641396 NaN NaN
19930204 29.414021 NaN NaN NaN 29.765419 NaN NaN
Symbol QQQ SPY XLE
Total Volume Total Volume Total Volume
Date
19930129 NaN 15167 NaN
19930201 NaN 7264 NaN
19930202 NaN 3043 NaN
19930203 NaN 8004 NaN
19930204 NaN 8035 NaN
如何對特定的一天和特定的列值進行子集設置,例如關閉所有交易品種的價格?
19930129 NaN NaN 29.062624 NaN
我嘗試了pt['Close']
,但似乎沒有用。 只有pt['SPY']
給出了符號SPY的整個表值。
您可以使用pd.IndexSlice
:
pt = pt.sortlevel(axis=1)
pt.loc['19930129', pd.IndexSlice[:,'Close']]
使用IndexSlicer需要對選擇軸進行完全lexsorted,因此要調用sortlevel
。
另外, slice(None)
也可以用於從第一列索引級別選擇所有內容:
pt = pt.sortlevel(axis=1)
pt.loc['19930129', (slice(None), 'Close')]
要選擇第ith
行,但按標簽選擇列,則可以使用
pt.loc[pt.index[i], (slice(None), 'Close')]
或者,您可以按照Andy Hayden的建議使用pt.ix
,但要注意,如果pt
具有整數索引,則pt.ix
執行基於標簽的行索引,而不是順序索引。
因此,只要19930129
(和其他索引值)不是整數-即pt.index
不是Int64Index
您可以使用
pt.ix[i, (slice(None), 'Close')]
請注意, 鏈式索引 ,例如
pt.iloc[i].loc[(slice(None), 'Close')]
執行分配時應避免使用,因為具有鏈接索引的分配可能無法修改pt
。
一種替代方法是使用xs ,“橫截面”:
In [21]: df.xs(axis=1, level=1, key="Open")
Out[21]:
Symbol DIA QQQ SPY XLE
Date
19930129 NaN NaN 29.083294 NaN
19930201 NaN NaN 29.083294 NaN
19930202 NaN NaN 29.248658 NaN
19930203 NaN NaN 29.372680 NaN
19930204 NaN NaN 29.744748 NaN
In [22]: df.xs(axis=1, level=1, key="Open").loc[19930129]
Out[22]:
Symbol
DIA NaN
QQQ NaN
SPY 29.083294
XLE NaN
Name: 19930129, dtype: float64
這沒有unutbu的答案強大(使用IndexSlice)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.