在熊猫数据框中查找元素

新手上路,请多包涵

我有一个 pandas 数据框,如下所示:

 0 1
0 2
2 3
1 4

我想要做的是:如果我得到 2 作为输入,我的代码应该在数据框中搜索 2,当它找到时返回另一列的值。在上面的示例中,我的代码将返回 0 和 3。我知道我可以简单地查看每一行并检查是否有任何元素等于 2,但我想知道是否有针对此类问题的单行代码。

更新:所有列都不是索引列。

谢谢

原文由 ahajib 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 271
2 个回答

你可能需要这个:

 n_input = 2

df[(df == n_input).any(1)].stack()[lambda x: x != n_input].unique()
# array([0, 3])

原文由 Psidom 发布,翻译遵循 CC BY-SA 3.0 许可协议

>>> df = pd.DataFrame({'A': [0, 0, 2, 1], 'B': [1,2,3,4]})
>>> df
   A  B
0  0  1
1  0  2
2  2  3
3  1  4

以下 pandas 语法等同于 SQL SELECT B FROM df WHERE A = 2

 >>> df[df['A'] == 2]['B']
2    3
Name: B, dtype: int64

还有 pandas.DataFrame.query

 >>> df.query('A == 2')['B']
2    3
Name: B, dtype: int64

原文由 blacksite 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题