在pandas数据框中查找元素

8

我有一个 Pandas 数据框,看起来像这样:

0 1
0 2
2 3
1 4

我想要做的是:如果我输入2,我的代码应该在数据框中搜索2,当找到它时返回另一列的值。在上面的例子中,我的代码将返回0和3。我知道我可以简单地查看每一行并检查其中任何一个元素是否等于2,但我想知道是否有一种一行代码解决这个问题的方法。
更新:没有列是索引列。
谢谢

你有列名吗?最左边的列是你的索引吗?你已经付出了什么努力?这是基本的pandas过滤。 - blacksite
@not_a_robot 我现在解决这个问题的方式是单独获取每一行,然后查找所需的项。我将查找过滤器的使用方法。 - ahajib
3个回答

18
>>> 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

4
你可能需要这个:
n_input = 2

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

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接