Python 隔离特定列中具有相同值的数据帧行的有效方法是什么?

Python 隔离特定列中具有相同值的数据帧行的有效方法是什么?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框,看起来像这样: AA、BB、CC、\u id1、\u id2、\u id3 “foo”、“foo”、“foo”、“1A1A1A”、“1A1A1A”、“1A1A1A” “foo”、“foo”、“foo”、“2B2B2B”、“4L4L4L”、“2B2B2B” 我想隔离具有不完全相同的\u id值的行。在上面的示例中,它将隔离第二行,而忽略第一行 我不知道在任何给定的运行中会存在多少\u id列(并且需要检查),它们的名称会有所不同(但会作为字符串列表提供:id\u column

我有一个熊猫数据框,看起来像这样:

AA、BB、CC、\u id1、\u id2、\u id3
“foo”、“foo”、“foo”、“1A1A1A”、“1A1A1A”、“1A1A1A”
“foo”、“foo”、“foo”、“2B2B2B”、“4L4L4L”、“2B2B2B”
我想隔离具有不完全相同的
\u id
值的行。在上面的示例中,它将隔离第二行,而忽略第一行

我不知道在任何给定的运行中会存在多少
\u id
列(并且需要检查),它们的名称会有所不同(但会作为字符串列表提供:
id\u column\u name
。这些名称也将始终具有
\u id
前缀

这里是否存在任何合理有效的表操作(或至少是串行操作)


当然,我可以编写一些函数(迭代和相关的行值)和
apply()
it row-wise,但是有更好的选择吗?

是的,使用
df.filter

df.filter(regex=r'^[_]')
要删除这些内容:

df.filter(regex=r'^[^_]')

首先按筛选
\u id
列,然后测试是否使用与第一列相同的值:


这只是隔离了相关的列。我的问题涉及到根据特定列中的行值过滤df内容。这确实有效,尽管它是使用
apply()
迭代的,这是我问题的最后一部分-没有比这更“本机”或更有效的了吗?
df1 = df.filter(regex='^_id')

df = df[~df1.eq(df1.iloc[:, 0], axis=0).all(axis=1)]
print (df)
   AA   BB   CC    _id1    _id2    _id3
1  foo  foo  foo  2B2B2B  4L4L4L  2B2B2B