df.iloc[i]
返回df
的第ith
行.i
不是指索引标签,i
是从0开始的索引.
相比之下,the attribute 100 returns actual index labels,而不是数字行索引:
df.index[df['BoolCol'] == True].tolist()
或者相当于,
df.index[df['BoolCol']].tolist()
通过使用DataFrame,您可以非常清楚地看到其中的不同之处
与行的数字位置不相等的非默认索引:
df = pd.DataFrame({'BoolCol': [True, False, False, True, True]},
index=[10,20,30,40,50])
In [53]: df
Out[53]:
BoolCol
10 True
20 False
30 False
40 True
50 True
[5 rows x 1 columns]
In [54]: df.index[df['BoolCol']].tolist()
Out[54]: [10, 40, 50]
If you want to use the index,
In [56]: idx = df.index[df['BoolCol']]
In [57]: idx
Out[57]: Int64Index([10, 40, 50], dtype='int64')
then you can select the rows using 100 instead of 101:
In [58]: df.loc[idx]
Out[58]:
BoolCol
10 True
40 True
50 True
[3 rows x 1 columns]
注意100 can also accept boolean arrays:
In [55]: df.loc[df['BoolCol']]
Out[55]:
BoolCol
10 True
40 True
50 True
[3 rows x 1 columns]
If you have a boolean array, 100, and need ordinal index values, you can compute them using 101:
In [110]: np.flatnonzero(df['BoolCol'])
Out[112]: array([0, 3, 4])
使用df.iloc
按顺序索引 Select 行:
In [113]: df.iloc[np.flatnonzero(df['BoolCol'])]
Out[113]:
BoolCol
10 True
40 True
50 True