在给定条件的情况下检索系列行

Retrieving series rows given a condition

考虑以下系列,它表示位置 a 和位置 bcd 之间的距离:

   a   
a  0

b  10

c  12

d  21

现在,我要做的是检索距 a.

一定距离内的所有位置名称

例如,我想打印出距离 a 15 个单位距离内的所有变量,不包括 a,即 bc.

b

c

我试过创建一个空列表,然后使用 for 循环附加到该列表但无济于事,所以我显然遗漏了一些东西。

你可以这样做,我假设第一列是一个索引:

print(df[(df['a'] < 15) & (df.index != 'a')])

      a
loc
b    10
c    12

忘记循环,pandas 和 numpy 已经内置了可以完成这项工作的函数。在这种情况下,您可以使用 np.where.

import pandas as pd
import numpy as np
df = pd.Series({'a':0, 'b':10, 'c':12, 'd':21}, index=['a', 'b', 'c', 'd'])
df.iloc[np.where((df<=15) & (df.index !='a'))]

试试这个:

dist = 15
val = list(df.loc[(df['a'] < dist) & (df.index != 'a')].index)
print(val)

输出:

['b', 'c']