亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

僅返回滿足 where 子句的數據框列

僅返回滿足 where 子句的數據框列

森林海 2021-09-28 14:59:13
從任意數據框開始,我想返回一個數據框,其中僅包含具有多個不同值的那些列。我有:X = df.nunique()喜歡:    Id               5    MSSubClass       3    MSZoning         1    LotFrontage      5    LotArea          5    Street           1    Alley            0    LotShape         2然后我將其從系列轉換為數據框:X = X.to_frame(name = 'dcount')然后我使用 where 子句只返回大于 1 的值:X.where(X[['dcount']]>1)看起來像:                   dcount    Id                5.0    MSSubClass        3.0    MSZoning          NaN    LotFrontage       5.0    LotArea           5.0    Street            NaN    Alley             NaN    LotShape          2.0    ...但我現在只想要那些沒有 dcount = 'NaN' 的 column_names(在 X 的索引中),以便我最終可以返回到我的原始數據幀 df 并將其定義為:df=df[[list_of_columns]]這應該怎么做?我嘗試了十幾種方法,這是一個 PitA。我懷疑有一種方法可以用 1 或 2 行代碼來完成。
查看完整描述

1 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

您可以使用布爾索引并避免將計數系列轉換為數據幀:


counts = df.nunique()

df = df[counts[counts > 1].index]

關鍵是要注意您系列的索引counts是列標簽。因此,您可以過濾系列,然后通過pd.Series.index.


這是一個演示:


df = pd.DataFrame({'A': [1, 1, 1], 'B': [1, 2, 3],

                   'C': [4, 5, 5], 'D': [0, 0, 0]})


counts = df.nunique()

df = df[counts[counts > 1].index]


print(df)


   B  C

0  1  4

1  2  5

2  3  5


查看完整回答
反對 回復 2021-09-28
  • 1 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號