我有一個資料框如下:
data = {('5105', 'Open'): [1.99,1.98,1.99,2.05,2.15],
('5105', 'Adj Close'): [1.92,1.92,1.96,2.07,2.08],
('5229', 'Open'): [0.01]*5,
('5229', 'Adj Close'): [0.02]*5,
('7076', 'Open'): [1.02,1.01,1.01,1.06,1.06],
('7076', 'Adj Close'): [0.90,0.92,0.94,0.94,0.95]}
df = pd.DataFrame(data)
5105 5229 7076
Open Adj Close Open Adj Close Open Adj Close
0 1.99 1.92 0.01 0.02 1.02 0.90
1 1.98 1.92 0.01 0.02 1.01 0.92
2 1.99 1.96 0.01 0.02 1.01 0.94
3 2.05 2.07 0.01 0.02 1.06 0.94
4 2.15 2.08 0.01 0.02 1.06 0.95
如上面的資料框,我們可以看到它df['5229']具有兩列Open并且Adj Close在整個列中分別具有相同的值。所以,我打算放棄它,因為它在我的分析中沒有用。
我有兩個疑問:
- 如果列的子列在整個列中分別具有相同的值,如何將列洗掉到級別 0(即第一列)?
- 另一方面,如果只有一個子列在整個列中具有相同的值,我該如何洗掉它?
由于這是基于條件的洗掉,我想知道df.drop在這種情況下是否仍然有效?
根據我的第一個和第二個查詢,在我上面的例子中,由于Open和Adj Close在整個列中具有相同的值,我想完全洗掉它。
預期的輸出是:
5105 7076
Open Adj Close Open Adj Close
0 1.99 1.92 1.02 0.90
1 1.98 1.92 1.01 0.92
2 1.99 1.96 1.01 0.94
3 2.05 2.07 1.06 0.94
4 2.15 2.08 1.06 0.95
編輯
真的很感謝那些回答問題的人。為了更簡潔,如果特定列中的所有值都相同,我試圖從包含 200 多個列的資料框中洗掉列。
uj5u.com熱心網友回復:
你可以試試這個:
for a, b in df.columns:
if df[a][b].duplicated(keep=False).sum() == df[a][b].size:
df.drop((a, b), axis=1, inplace=True)
結果:
5105 7076
Open Adj Close Open Adj Close
0 1.99 1.92 1.02 0.90
1 1.98 1.92 1.01 0.92
2 1.99 1.96 1.01 0.94
3 2.05 2.07 1.06 0.94
4 2.15 2.08 1.06 0.95
uj5u.com熱心網友回復:
我們可以使用unstack groupby來nunique獲取每列中唯一值的數量。然后僅選擇具有超過 1 個值的列loc:
out = df[df.unstack().groupby(level=[0,1]).nunique().loc[lambda x: x!=1].index]
輸出:
5105 7076
Adj Close Open Adj Close Open
0 1.92 1.99 0.90 1.02
1 1.92 1.98 0.92 1.01
2 1.96 1.99 0.94 1.01
3 2.07 2.05 0.94 1.06
4 2.08 2.15 0.95 1.06
uj5u.com熱心網友回復:
嘗試nunique
df = df.loc[:,~(df.nunique()==1).values]
Out[125]:
5105 7076
Open Adj Close Open Adj Close
0 1.99 1.92 1.02 0.90
1 1.98 1.92 1.01 0.92
2 1.99 1.96 1.01 0.94
3 2.05 2.07 1.06 0.94
4 2.15 2.08 1.06 0.95
uj5u.com熱心網友回復:
嘗試這個:
df.drop('5229',level=0,axis=1)
輸出:
5105 7076
Open Adj Close Open Adj Close
0 1.99 1.92 1.02 0.90
1 1.98 1.92 1.01 0.92
2 1.99 1.96 1.01 0.94
3 2.05 2.07 1.06 0.94
4 2.15 2.08 1.06 0.95
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/453146.html
標籤:Python python-3.x 熊猫 数据框 多指标
上一篇:使用python實作尾遞回函式
