我正在使用基于标签的索引功能loc
在列列表(即列表"UN"
)中搜索对象值为"columns"
的所有标签,但是在此loc
在第一个索引处找不到"UN"
时,将立即停止编码,然后仅打印第一个索引。
columns=["median","age","capital"] # this is the list of columns
recent_grads
是我的数据框。
for column in columns:
recent_grads.loc[0:172 == 'UN',column]
这是'median'
列
recent_grads["median"]
0 NaN
1 75000
2 73000
3 70000
4 65000
5 65000
6 UN
7 62000
8 60000
9 60000
10 60000
11 60000
12 60000
13 60000
14 58000
15 57100
16 57000
17 56000
18 54000
19 54000
20 53000
21 53000
22 52000
23 52000
24 51000
25 50000
26 50000
27 50000
28 50000
29 50000
...
143 32000
144 32000
145 31500
146 31000
147 31000
148 31000
149 30500
150 30000
151 30000
152 30000
153 30000
154 30000
155 30000
156 30000
157 30000
158 29000
159 29000
160 29000
161 29000
162 28000
163 28000
164 28000
165 27500
166 27000
167 27000
168 26000
169 25000
170 25000
171 23400
172 22000
Name: median, Length: 173, dtype: object
关于我的代码的输出:
recent_grads.loc[0:172 == 'UN',"median"]
输出:
0 NaN
Name: median, dtype: object
选择随机起始索引
recent_grads.loc[3:172 == ['UN'],"median"]
输出结果不同:
Series([], Name: median, dtype: object)
答案 0 :(得分:1)
我认为您需要在前172条记录的列中搜索“ UN”,如果是这样的话:
# returns a dataframe
df.head(172).filter(df[column] == 'UN')
更新:
如果您想使用loc
,请简单:
df.head(172).loc[df[column] == 'UN']
对于接受的答案,这不会将dataframe
转换为列表,后者会创建一个新对象,并且可能会消耗更多的内存,尤其是在您的数据很大时。因此,这种本机Dataframe方法更有效。
答案 1 :(得分:1)
如果要使用“ UN”标签:
使用:
list_of_index=list(recent_grads[recent_grads['median'].str.contains('UN',na=False)].index)
或:
list_of_index = list(recent_grads.loc[recent_grads['median']=='UN'].index)
其中:
recent_grads.loc[recent_grads['median']=='UN']
查找包含UN