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']
最后一个虽然字符最长,但如果要搜索的值接近序列的开头,则对于大型数组来说,它的速度会很快