我对pandas很陌生。
有没有一种方法可以检查给定的pandas数据框中是否存在具有特定列值的行。比如我有一个名为“Name”的列,我需要检查是否存在某个特定名称。
一旦我这样做了,我将需要进行类似的查询,但是要一次查询一堆值。我读到有“isin”,但我不确定该如何使用它。因此,我需要进行查询,以便我得到所有具有与名称数组中任何值匹配的“Name”列的行。
我对pandas很陌生。
有没有一种方法可以检查给定的pandas数据框中是否存在具有特定列值的行。比如我有一个名为“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
第二部分:
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)
df[0]
。 - Akavallabc
是什么,它是一个列名吗?尽管df['name']
和df.name
一样,但any(df['abc'])
应该可行。 - Akavall>>> 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])
>>>