How to check if there exists a row with a certain column value in pandas dataframe
熊猫很新。
如果存在具有特定列值的行,是否可以检查给定的熊猫数据帧。假设我有一个列"name",我需要检查它是否存在。
一旦我这样做了,我将需要做一个类似的查询,但是一次要用一堆值。我读到有"isin",但我不知道该如何使用它。因此,我需要进行一个查询,以便获得所有"name"列与大名称数组中的任何值匹配的行。
1 2 3 | import numpy as np import pandas as pd df = pd.DataFrame(data = np.arange(8).reshape(4,2), columns=['name', 'value']) |
结果:
1 2 3 4 5 6 7 8 9 10 | >>> 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 |
号
第二部分:
1 2 3 4 | my_data = np.arange(8).reshape(4,2) my_data[0,0] = 4 df = pd.DataFrame(data = my_data, columns=['name', 'value']) |
结果:
1 2 3 4 | >>> df.loc[df.name == 4] name value 0 4 1 2 4 5 |
。
更新:
1 2 3 4 | 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']) |
结果:
1 2 3 4 5 6 | >>> 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) |
。
如果要提取给定行标签和列标签序列的一组值,则lookup方法允许这样做,并返回一个numpy数组。
以下是我的代码片段和输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | >>> 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]) >>> |
。