Python 如何将条件应用于iloc
我使用Python 如何将条件应用于iloc,python,pandas,dataframe,Python,Pandas,Dataframe,我使用ilocas从数据帧中选择列2-end d=c.iloc[:,2:] 现在如何将条件应用于此选择?例如,如果column1==1您可以使用if need filter first column select by position,:表示在此处选择所有行: c[c.iloc[:, 0] == 1] 样本: c = pd.DataFrame({'A':list('abcdef'), 'B':[4,5,4,5,5,4],
iloc
as从数据帧中选择列2-end
d=c.iloc[:,2:]
现在如何将条件应用于此选择?例如,如果column1==1
您可以使用if need filter first column select by position,:
表示在此处选择所有行:
c[c.iloc[:, 0] == 1]
样本:
c = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')})
print (c)
A B C D E F
0 a 4 7 1 5 a
1 b 5 8 3 3 a
2 c 4 9 5 6 a
3 d 5 4 7 9 b
4 e 5 2 1 2 b
5 f 4 3 0 4 b
df = c[c.iloc[:, 3] == 1]
print (df)
A B C D E F
0 a 4 7 1 5 a
4 e 5 2 1 2 b
这被称为混合索引,因为您希望按布尔结果在行中进行索引,并按列中的位置进行索引。我会使用
loc
来利用行的布尔索引。但这意味着您需要列切片的列名值
d.loc[d.column1 == 1, d.columns[2:]]
如果列名不唯一,则可以使用可怕的链式索引
d.loc[d.column1 == 1].iloc[:, 2:]
更直观的方法是在之后使用查询
:
d.iloc[:, 2:].query('column1 == 1')
你认为
d[d.column1==1]
?你认为呢?这似乎是重复的。@jezrael你是说c.loc[c[1]==1]
?它提供了KeyError:1
谢谢,各种方法的大量集合!我学到了很多。