Python 在DataFrame中选择具有特定值的列
我的数据框中有一些列的值为0和1Python 在DataFrame中选择具有特定值的列,python,pandas,dataframe,select,Python,Pandas,Dataframe,Select,我的数据框中有一些列的值为0和1 name a b c d e 0 one 1 0 1 0 0 1 two 0 0 1 0 0 2 three 0 0 1 0 1 如何选择至少有一个值为1的列?但也必须选择另一列(即字符串或不仅取0和1值) 我试过这个表达 df.iloc[:, [(clm == 'name') | (1 in df[clm].unique()) for clm in
name a b c d e
0 one 1 0 1 0 0
1 two 0 0 1 0 0
2 three 0 0 1 0 1
如何选择至少有一个值为1的列?但也必须选择另一列(即字符串或不仅取0和1值)
我试过这个表达
df.iloc[:, [(clm == 'name') | (1 in df[clm].unique()) for clm in df.columns]]
Out:
name a c e
0 one 1 1 0
1 two 0 1 0
2 three 0 1 1
但这似乎不太好,因为我显式选择了列“name”如果可能的话,删除所有只有
0
值的列比较“值不相等”,并在以下列中为每列返回至少一个True
:
详细信息:
print (df.ne(0))
name a b c d e
0 True True False True False False
1 True False False True False False
2 True False False True False True
print (df.ne(0).any())
name True
a True
b False
c True
d False
e True
dtype: bool
谢谢,这是一个很好的解决方案。如果要选择值为1的列,该怎么办?或者我有其他值的列,但我应该只对非字符串列应用条件?如果我想选择任何值为1的列
df.eq(1).any()
。如何选择“name”列?@sergzemsk未测试,我只打电话。但其中一个技巧应该是选择所有数字列,测试1,然后添加所有其他列和字符串。类似于df=df.loc[:,df.选择数据类型(np.number).eq(1).any().reindex(df.columns,fill\u value=True)]
print (df.ne(0))
name a b c d e
0 True True False True False False
1 True False False True False False
2 True False False True False True
print (df.ne(0).any())
name True
a True
b False
c True
d False
e True
dtype: bool