在给定条件的情况下检索系列行
Retrieving series rows given a condition
考虑以下系列,它表示位置 a
和位置 b
、c
、d
之间的距离:
a
a 0
b 10
c 12
d 21
现在,我要做的是检索距 a
.
一定距离内的所有位置名称
例如,我想打印出距离 a
15 个单位距离内的所有变量,不包括 a
,即 b
和 c
.
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']
考虑以下系列,它表示位置 a
和位置 b
、c
、d
之间的距离:
a
a 0
b 10
c 12
d 21
现在,我要做的是检索距 a
.
例如,我想打印出距离 a
15 个单位距离内的所有变量,不包括 a
,即 b
和 c
.
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']