如何从数据帧中检索标量

时间:2016-10-06 00:08:52

标签: python pandas

如何使用另一个标记从pandas dataframe列中检索单个标量。我正在使用.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]

2 个答案:

答案 0 :(得分:1)

您可以在条件系列上调用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

答案 1 :(得分:0)

作为参考,以下是一些实现相同结果的不同方法:

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']

如果搜索的值接近系列的开头,那么最后一个,尽管字符方面最长,对于大型数组来说会很快。