Python 如何检查dataframe中是否存在具有特定列值的行

Python 如何检查dataframe中是否存在具有特定列值的行,python,pandas,dataframe,Python,Pandas,Dataframe,对熊猫来说非常新鲜 如果存在具有特定列值的行,是否有方法检查给定的数据帧。假设我有一列“Name”,我需要检查某个名称是否存在 一旦我这样做了,我需要做一个类似的查询,但是每次都有一堆值。 我读到有“isin”,但我不知道如何使用它。所以我需要进行一个查询,这样我就可以得到所有的行,这些行的“Name”列与一个大的名称数组中的任何值相匹配 import numpy as np import pandas as pd df = pd.DataFrame(data = np.arange(8).re

对熊猫来说非常新鲜

如果存在具有特定列值的行,是否有方法检查给定的数据帧。假设我有一列“Name”,我需要检查某个名称是否存在

一旦我这样做了,我需要做一个类似的查询,但是每次都有一堆值。 我读到有“isin”,但我不知道如何使用它。所以我需要进行一个查询,这样我就可以得到所有的行,这些行的“Name”列与一个大的名称数组中的任何值相匹配

import numpy as np
import pandas as pd
df = pd.DataFrame(data = np.arange(8).reshape(4,2), columns=['name', 'value'])
结果:

>>> df
   name  value
0     0      1
1     2      3
2     4      5
3     6      7
>>> any(df.name == 4)
True
>>> any(df.name == 5)
False
>>> df.loc[df.name == 4]
   name  value
0     4      1
2     4      5
>>> df.loc[df.name == 4]  # gives relevant rows
   name  value
a     4      1
c     4      5  
>>> df.loc[df.name == 4].index  # give "row names" of relevant rows
Index([u'a', u'c'], dtype=object)
第二部分:

my_data = np.arange(8).reshape(4,2)
my_data[0,0] = 4

df = pd.DataFrame(data = my_data, columns=['name', 'value'])
结果:

>>> df
   name  value
0     0      1
1     2      3
2     4      5
3     6      7
>>> any(df.name == 4)
True
>>> any(df.name == 5)
False
>>> df.loc[df.name == 4]
   name  value
0     4      1
2     4      5
>>> df.loc[df.name == 4]  # gives relevant rows
   name  value
a     4      1
c     4      5  
>>> df.loc[df.name == 4].index  # give "row names" of relevant rows
Index([u'a', u'c'], dtype=object)
更新:

my_data = np.arange(8).reshape(4,2)
my_data[0,0] = 4

df = pd.DataFrame(data = my_data, index=['a', 'b', 'c', 'd'], columns=['name', 'value'])
结果:

>>> df
   name  value
0     0      1
1     2      3
2     4      5
3     6      7
>>> any(df.name == 4)
True
>>> any(df.name == 5)
False
>>> df.loc[df.name == 4]
   name  value
0     4      1
2     4      5
>>> df.loc[df.name == 4]  # gives relevant rows
   name  value
a     4      1
c     4      5  
>>> df.loc[df.name == 4].index  # give "row names" of relevant rows
Index([u'a', u'c'], dtype=object)

如果要提取给定行标签和列标签序列的一组值,并且查找方法允许此操作并返回numpy数组。

以下是我的代码片段和输出:

>>> import pandas as pd
>>> import numpy as np
>>> df = DataFrame(np.random.rand(20,4), columns = ['A','B','C','D'])
>>> df
           A         B         C         D
0   0.121190  0.360813  0.500082  0.817546
1   0.304313  0.773412  0.902835  0.440485
2   0.700338  0.733342  0.196394  0.364041
3   0.385534  0.078589  0.181256  0.440475
4   0.151840  0.956841  0.422713  0.018626
5   0.995875  0.110973  0.149234  0.543029
6   0.274740  0.745955  0.420808  0.020774
7   0.305654  0.580817  0.580476  0.210345
8   0.726075  0.801743  0.562489  0.367190
9   0.567987  0.591544  0.523653  0.133099
10  0.795625  0.163556  0.594703  0.208612
11  0.977728  0.751709  0.976577  0.439014
12  0.967853  0.214956  0.126942  0.293847
13  0.189418  0.019772  0.618112  0.643358
14  0.526221  0.276373  0.947315  0.792088
15  0.714835  0.782455  0.043654  0.966490
16  0.760602  0.487120  0.747248  0.982081
17  0.050449  0.666720  0.835464  0.522671
18  0.382314  0.146728  0.666722  0.573501
19  0.392152  0.195802  0.919299  0.181929

>>> df.lookup([0,2,4,6], ['B', 'C', 'A','D'])
array([ 0.36081287,  0.19639367,  0.15184046,  0.02077381])
>>> df.lookup([0,2,4,6], ['A', 'B', 'C','D'])
array([ 0.12119047,  0.73334194,  0.4227131 ,  0.02077381])
>>>

对不起,第二个问题的答案是在我以为我刚刚看到有人发布了第一个问题的答案,但这似乎已经消失了。我发布了一个答案,但后来我认为我误读了这个问题,我把它放了回去。让我知道它很有用。非常感谢。如果我需要基于标签索引执行相同的操作,那么在这种情况下,我应该使用什么?比如说,我根据标签索引存储了它,而标签就是名称。你可以只使用索引,例如
df[0]
。像这样任何(df['abc'])?我不确定
abc
是什么,那是列名称吗
any(df['abc'])
应该可以工作,因为
df['name']
就像
df.name
一样工作。我的意思是如果'abc'是一个行名,就像我对行使用基于标签的索引一样。所以它本身不是一个列名。