假設下一個df:
d={'month': ['01/01/2020', '01/02/2020', '01/03/2020', '01/01/2020', '01/02/2020', '01/03/2020'] 。
'country': ['Japan', 'Japan', 'Japan', '波蘭', '波蘭', '波蘭'] 。
'level': ['A01'/span>, 'A01'/span>, 'A01'/span>, 'A00','A00', 'A00'] 。
'job title': ['洞察力經理', '洞察力經理', '洞察力經理', '銷售總監', '銷售總監', '銷售總監'] 。
'數字':[0, 0. 001, 0, 0, 0, 0] 。
'age'。 [24, 22, 45, 38, 60, 32]}。
df=pd.DataFrame(d)
當試圖獲得所有列的方差時,出現了下一個結果:
import pandas as pd
df.agg("var")
結果:
number 1.666667e-07。
年齡2.025667e 02。
dtype: float64
我們的想法是移除處于某個等級的列,例如,如果列方差
在0和0.0001之間的等級,(即:洗掉number列,因為它的方差在這個等級之內)
當嘗試這樣做時:
df= df.loc[:, 0 < df.std() < .0001 ]
下一個錯誤出現了:
ValueError。系列的真值是不明確的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
是否可以洗掉方差在容許等級內的pandas df列?
uj5u.com熱心網友回復:
你不能對pandas系列使用鏈式比較運算子,因為在引擎蓋下,它們被翻譯成and,只對標量有效。使用矢量的&代替:
uj5u.com熱心網友回復:
另一個解決方案(使用.between .drop(columns=...))
var = df.agg("var", numeric_only=True)
df = df.drop(columns=var[var.between(0, 0.0001)].index)
print(df)
列印:
月份 國家級別 職位名稱 年齡
0 01/01/2020 日本 A01 洞察力經理 24
1 01/02/2020 日本 A01 洞察力經理 22
2 01/03/2020 日本 A01 洞察力經理 45
3 01/01/2020 波蘭 A00 銷售總監 38
4 01/02/2020 波蘭 A00 級銷售總監 60
5 01/03/2020 波蘭 A00 級銷售總監 32
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/316889.html
標籤:
上一篇:計時神經網路推理標準
