繁体   English   中英

如何检查pandas数据帧中是否存在具有特定列值的行

[英]How to check if there exists a row with a certain column value in pandas dataframe

对熊猫来说很新鲜。

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

一旦我这样做,我将需要进行类似的查询,但一次只有一堆值。 我读到有'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

第二部分:

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

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

结果:

>>> df.loc[df.name == 4]
   name  value
0     4      1
2     4      5

更新:

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.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])
>>>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM