以下标准给出了布尔真假结果(梳子是一个超过1,000列的数据帧,我选择的列数超过4000.
criteria = comb.ix[:,'c_0327':].count()>4000
Run Code Online (Sandbox Code Playgroud)
我想用它来选择True列到新的Dataframe.
以下只给出了"Unalignable boolean Series key"
comb.loc[criteria,]
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
comb.ix[:, comb.ix[:,'c_0327':].count()>4000]
Run Code Online (Sandbox Code Playgroud)
类似于这个问题回答数据框布尔选择沿列而不是行, 但这给了我同样的错误:"提供了不可对齐的布尔系列键"
comb.ix[:,'c_0327':].count()>4000
Run Code Online (Sandbox Code Playgroud)
收益率:
c_0327 False
c_0328 False
c_0329 False
c_0330 False
c_0331 False
c_0332 False
c_0333 False
c_0334 False
c_0335 False
c_0336 False
c_0337 True
c_0338 False
.....
Run Code Online (Sandbox Code Playgroud)
EdC*_*ica 25
返回的是一个Series,列名作为索引,布尔值作为行值.
我想你真的想要:
这应该工作:
comb[criteria.index[criteria]]
Run Code Online (Sandbox Code Playgroud)
基本上,这使用来自条件的索引值和布尔值来掩盖它们,这将返回一个列名称数组,我们可以使用它来从orig df中选择感兴趣的列.
joh*_*ger 19
在熊猫 0.25 中:
comb.loc[:, criteria]
Run Code Online (Sandbox Code Playgroud)
返回一个 DataFrame,其中的列由布尔列表或系列选择。
对于多个条件:
comb.loc[:, criteria1 & criteria2]
Run Code Online (Sandbox Code Playgroud)
并选择具有索引条件的行:
comb[criteria]
Run Code Online (Sandbox Code Playgroud)
注意:&需要按位运算符(不是and)。请参阅Pandas 中布尔索引的逻辑运算符。
其他注意:如果条件是一个表达式(例如,comb.columnX > 3),并且使用了多个条件,请记住将每个表达式括在括号中!这是因为&, |具有更高的优先级比>, ==, ect.(而and, or优先级较低)。
您还可以使用:
# To filter columns (assuming criteria length is equal to the number of columns of comb)comb.ix[:, criteria]comb.iloc[:, criteria.values] # To filter rows (assuming criteria length is equal to the number of rows of comb) comb[criteria]
| 归档时间: |
|
| 查看次数: |
25993 次 |
| 最近记录: |