如何使用另一个标记从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]
答案 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']
如果搜索的值接近系列的开头,那么最后一个,尽管字符方面最长,对于大型数组来说会很快。