任务:在多列数据帧中搜索一个值(所有值都是唯一的),并返回该行的索引。在
当前:使用get_loc,但它似乎一次只允许传递一个列,导致try except语句集非常无效。虽然它有效,有人知道一个更有效的方法来做到这一点吗?在
df = pd.DataFrame(np.random.randint(0,100,size=(4, 4)), columns=list('ABCD'))
try:
unique_index = pd.Index(df['A'])
print(unique_index.get_loc(20))
except KeyError:
try:
unique_index = pd.Index(df['B'])
print(unique_index.get_loc(20))
except KeyError:
unique_index = pd.Index(df['C'])
print(unique_index.get_loc(20))
循环似乎不起作用,因为如果列不包含值,则会引发KeyError。我已经看过.contains或.isin等函数,但我感兴趣的是位置索引。在
考虑这个例子,而不是使用
np.random.seed
我们可以使用
^{pr2}$np.where
和切片来查找值的位置。请注意,我使用了一个值55
,因为我从所选种子中获得的数据中包含的内容。如果20
在您的数据集中,这将很好地工作。事实上,如果你有一个以上的话,它会起作用的。在您可以使用^{} ,它返回一个包含行和列索引的元组,其中包含您的值。然后您可以从中只选择行。在
使用矢量化操作和布尔索引:
相关问题 更多 >
编程相关推荐