Pandas:返回符合特定条件的列的列标题

时间:2017-03-07 02:42:06

标签: python pandas

我有一些数据,并希望获得样本量较小的列的列标题(例如,总行数<90%)。如何获取它们的列表,可能作为列表或数据框返回?

在下面的示例中,我希望将FieldC作为输出。

使用train_df.head()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2000 entries, 0 to 1999
Data columns (total 100 columns):
Id               2000 non-null int64
FieldA           2000 non-null int64
FieldB           2000 non-null object
FieldC           1675 non-null float64
FieldD           2000 non-null int64
FieldE           2000 non-null object
...more fields...

使用train_df.count()<2000*0.9

Id               False
FieldA           False
FieldB           False
FieldC           True
FieldD           False
FieldE           False
...more fields...

2 个答案:

答案 0 :(得分:0)

我认为你可以做到:

columnsToBeReturn=[]
max=df.shape[0] #getting the shape of the entire dataframe so the biggest number of rows
for col in df.columns: 
   if len(df[col])<max*0.9:
       columsToBeReturn.append(col)
return columnsToBeReturn

答案 1 :(得分:0)

>>> _=pandas.DataFrame({'horse':[3,None],'cow':[1,2],'sheep':[None,None]})
>>> _
   cow  horse sheep
0    1    3.0  None
1    2    NaN  None
>>> criterion2=_.columns[_.count()>2]
>>> criterion1=_.columns[_.count()>1]
>>> criterion0=_.columns[_.count()>0]
>>> criterion2
Index([], dtype='object')
>>> criterion1
Index(['cow'], dtype='object')
>>> criterion0
Index(['cow', 'horse'], dtype='object')
>>> _[criterion2]
Empty DataFrame
Columns: []
Index: [0, 1]
>>> _[criterion1]
   cow
0    1
1    2
>>> _[criterion0]
   cow  horse
0    1    3.0
1    2    NaN
>>> pandas.__version__
'0.22.0'

此pandas.'object'的索引也可以转换为文本字符串序列。