如何筛选出与Python中的大小写不同的数据帧记录?

如何筛选出与Python中的大小写不同的数据帧记录?,python,pandas,search,dataframe,filter,Python,Pandas,Search,Dataframe,Filter,我有一个由超过10k的记录组成的熊猫数据帧。我想在名称列表中保留一个或多个案例中包含所有名称的行。一个id可以等于多个案例 Id 2处于输出状态,因为bla2,bla3,bla4等于名称中的案例1。Id 5处于输出状态,因为bla6和bla7等于name列表中的case 4。 Id 1不在输出中,因为它没有bla3和bla7(case2)。等等 输入 id | name | [A LOT OF OTHER COLUMNS] | ----------------------------------

我有一个由超过10k的记录组成的熊猫数据帧。我想在名称列表中保留一个或多个案例中包含所有名称的行。一个id可以等于多个案例

Id 2处于输出状态,因为
bla2
bla3
bla4
等于
名称中的
案例1
。Id 5处于输出状态,因为
bla6
bla7
等于
name
列表中的
case 4
。 Id 1不在输出中,因为它没有
bla3
bla7
case2
)。等等

输入

id | name | [A LOT OF OTHER COLUMNS] |
--------------------------------------
1  | bla1 | [A LOT OF OTHER COLUMNS] |
2  | bla2 | [A LOT OF OTHER COLUMNS] |
2  | bla3 | [A LOT OF OTHER COLUMNS] |
2  | bla4 | [A LOT OF OTHER COLUMNS] |
3  | bla5 | [A LOT OF OTHER COLUMNS] |
4  | bla9 | [A LOT OF OTHER COLUMNS] |
5  | bla6 | [A LOT OF OTHER COLUMNS] |
5  | bla7 | [A LOT OF OTHER COLUMNS] |
6  | bla8 | [A LOT OF OTHER COLUMNS] |
id | name | [A LOT OF OTHER COLUMNS]
--------------------------------------
2  | bla2 |
2  | bla3 |
2  | bla4 |
5  | bla6 |
5  | bla7 |
所需输出

id | name | [A LOT OF OTHER COLUMNS] |
--------------------------------------
1  | bla1 | [A LOT OF OTHER COLUMNS] |
2  | bla2 | [A LOT OF OTHER COLUMNS] |
2  | bla3 | [A LOT OF OTHER COLUMNS] |
2  | bla4 | [A LOT OF OTHER COLUMNS] |
3  | bla5 | [A LOT OF OTHER COLUMNS] |
4  | bla9 | [A LOT OF OTHER COLUMNS] |
5  | bla6 | [A LOT OF OTHER COLUMNS] |
5  | bla7 | [A LOT OF OTHER COLUMNS] |
6  | bla8 | [A LOT OF OTHER COLUMNS] |
id | name | [A LOT OF OTHER COLUMNS]
--------------------------------------
2  | bla2 |
2  | bla3 |
2  | bla4 |
5  | bla6 |
5  | bla7 |
因为

names [
  [bla2, bla3, bla4], #case 1
  [bla1, bla3, bla7], #case 2
  [bla3, bla1, bla6], #case 3
  [bla6, bla7] #case 4
]
您可以使用with a bit modified with,以返回至少一个
True

def f(x):
    a = any([(x['name'].isin(y)).all() & pd.Series(y).isin(x['name']).all() for y in names])
    return (a)

df1 = (df.groupby('id').filter(f))

print (df1)
   id  name  [A LOT OF OTHER COLUMNS]
1   2  bla2  [A LOT OF OTHER COLUMNS]
2   2  bla3  [A LOT OF OTHER COLUMNS]
3   2  bla4  [A LOT OF OTHER COLUMNS]
6   5  bla6  [A LOT OF OTHER COLUMNS]
7   5  bla7  [A LOT OF OTHER COLUMNS]

你可以使用一个面具,即

 acceptable = set([name1, name 2...])
 df[df[name] in acceptable]

有点不对劲。它仍然会打印出一些记录,例如
id=2
,这些记录的名称没有列在
names
中:太棒了,这正是我要找的!我已经尝试了很多类似的事情,但从来没有得到它的工作。我试着在一条线上做这件事,显然这个df1解决了它。非常感谢!太好了,很高兴能帮上忙!如果我的答案有用,别忘了-点击复选标记(
),将其从灰显切换为填充。谢谢。我试着在我回答的地方投票,因为我记得很难获得声誉积分;)所以我以前提过,现在也提过你的老问题;)嗯,似乎需要
a=any([(x['name'].isin(y)).all()&pd.Series(y).isin(x['name']).all()|(x['column3']<'2014-12-01').all()表示名称中的y])