Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从数据帧中检索标量_Python_Pandas - Fatal编程技术网

Python 如何从数据帧中检索标量

Python 如何从数据帧中检索标量,python,pandas,Python,Pandas,如何使用对另一个数据帧列的筛选从数据帧列检索单个标量。我正在使用.value[0]但我想要更好的 df['Age_in_years'][ df['Sample_id'] == id_sample ].values[0] df.loc[df['Sample_id'] == id_sample, 'Age_in_years'].values[0] 您可以对条件系列调用idxmax(),它返回: 最大值首次出现的索引 在本例中,这是第一个True的索引,然后使用loc查找相应的值: df = pd.

如何使用对另一个数据帧列的筛选从数据帧列检索单个标量。我正在使用
.value[0]
但我想要更好的

df['Age_in_years'][ df['Sample_id'] == id_sample ].values[0]
df.loc[df['Sample_id'] == id_sample, 'Age_in_years'].values[0]
您可以对条件系列调用
idxmax()
,它返回:

最大值首次出现的索引

在本例中,这是第一个True的索引,然后使用
loc
查找相应的值:

df = pd.DataFrame({'id': [1,2,3,4,5,6], 'value': [2,2,2,3,3,3]})

df
#  id   value
#0  1   2
#1  2   2
#2  3   2
#3  4   3
#4  5   3
#5  6   3

df.loc[(df.value == 3).idxmax(), 'id']
# 4

以下是实现相同结果的几种不同方法供参考:

df = pd.DataFrame({'id': [1,2,3,4,5,6], 'value': [2,2,2,3,3,3]})

df.loc[(df.value == 3).nonzero()[0][0], 'id']

df.loc[np.where(df.value == 3)[0][0], 'id']

df.loc[df.value.where(df.value == 3).first_valid_index(), 'id']

df.loc[next(idx for idx, val in enumerate(df.value) if val==3), 'id']
最后一个虽然字符最长,但如果要搜索的值接近序列的开头,则对于大型数组来说,它的速度会很快