python—如何获取pandas中其他指定行的特定列集合上具有相同值的所有行?

sdnqo3pr  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(222)

在与此类似的设置中:

>>> import pandas as pd
>>> from random import randint
>>> df = pd.DataFrame({'A': [randint(1, 9) for x in range(10)],
                   'B': [randint(1, 9)*10 for x in range(10)],
                   'C': [randint(1, 9)*100 for x in range(10)]})
>>> df
   A   B    C
0  9  80  900
1  9  70  700
2  5  70  900
3  8  80  900
4  7  50  200
5  9  30  900
6  2  80  900
7  2  80  400
8  5  80  300
9  7  80  900

我的问题是如何获得dataframe中其他指定行(例如索引为3的行)的某组列(例如{b,c})上具有相同值的所有行
我想要这个(索引3,集合{b,c}):

A   B    C
0  9  80  900
3  8  80  900 # this is the rows specified
6  2  80  900
9  7  80  900

现在的问题是,在我的例子中,我的一组列({b,c})由200多列组成,我找不到生成如此长的条件的方法。对于该问题,可以假设列的枚举范围为0到n。

tez616oj

tez616oj1#

可以将列子集作为列表,并使用 .loc 访问器,然后检查等式并调用 all 对于 axis=1 ,最后获取此掩蔽的结果 Dataframe 。

>>> cols = ['B', 'C']
>>> index = 3
>>> df[(df[cols]==df.loc[index, cols]).all(1)]

输出:

A   B    C
0  9  80  900
3  8  80  900
6  2  80  900
9  7  80  900

相关问题