在pandas数据框中查找元素

时间:2017-03-14 20:36:32

标签: python pandas dataframe

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

0 1
0 2
2 3
1 4

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

更新:没有列是索引列。

由于

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

你可能需要这个:

n_input = 2

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

答案 2 :(得分:0)

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