簡體   English   中英

獲取具有對象或分類數據類型的列名列表

[英]Get list of column names having either object or categorical dtype

我的目標是獲得一個列表對象: ['assetCode', 'assetName'] ,其中的內容是基於多個條件檢索到的Panda.series的標簽。 我試過了:

tmp3 = datatype[datatype == 'object' | datatype == 'category'].index # extract label from Pandas.series

這給出了錯誤: TypeError: cannot compare a dtyped [object] array with a scalar of type [bool]

然而,雖然不太優雅,但我能夠找到以下兩個可行的解決方案:

tmp2 = datatype[datatype == 'object'].index # extract label from Pandas.series
tmp2[0]
'assetCode'


tmp1 = datatype[datatype == 'category'].index # extract label from Pandas.series
tmp1[0]
'assetName'

如何將這兩個字符串組合成一個列表對象? 有沒有比我嘗試的方式更好的方法來實現這個目標?

設置

df

   A  B  C
0  8  4  2
1  8  8  6
2  8  5  2

datatype = df.dtypes
datatype

A      object
B    category
C       int64
dtype: object

看起來您正在嘗試從某些 DataFrame(此處未顯示)中選擇對象和分類列。 要修復您的代碼,請使用:

tmp3 = datatype[(datatype == 'object') | (datatype == 'category')].index.tolist()
tmp3
#  ['A', 'B']

由於按位運算符具有更高的優先級,因此您需要在對掩碼進行 OR 運算之前使用括號。 之后,索引工作正常。

要獲取列表,請調用.index.tolist()


另一種解決方案是select_dtypes

df.select_dtypes(include=['object', 'category'])

   A  B
0  8  4
1  8  8
2  8  5

df.select_dtypes(include=['object', 'category']).columns
# ['A', 'B']

這避免了對中間datatype系列的需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM