当前位置: 首页 > 面试题库 >

pandas数据框选择行,其中列表列包含任何字符串列表

陈实
2023-03-14
问题内容

我有一个看起来像这样的Pandas DataFrame:

  molecule            species
0        a              [dog]
1        b       [horse, pig]
2        c         [cat, dog]
3        d  [cat, horse, pig]
4        e     [chicken, pig]

而且我想提取仅包含那些行的DataFrame,其中包含的任何行selection = ['cat', 'dog']。因此结果应如下所示:

  molecule            species
0        a              [dog]
1        c         [cat, dog]
2        d  [cat, horse, pig]

最简单的方法是什么?

供测试用:

selection = ['cat', 'dog']
df = pd.DataFrame({'molecule': ['a','b','c','d','e'], 'species' : [['dog'], ['horse','pig'],['cat', 'dog'], ['cat','horse','pig'], ['chicken','pig']]})

问题答案:

IIUC重新创建您的df,然后使用isinwithany应该比apply

df[pd.DataFrame(df.species.tolist()).isin(selection).any(1).values]
Out[64]: 
  molecule            species
0        a              [dog]
2        c         [cat, dog]
3        d  [cat, horse, pig]


 类似资料:
  • 问题内容: 我有一个包含很多列的数据框。现在,我只想选择某些列。我将要选择的所有列名称保存到Python列表中,现在我想根据该列表过滤数据框。 我一直在尝试做: 其中list包含我要选择的所有列名。 但是我得到了错误: 任何帮助吗? 问题答案: 您可以删除一个: 也最好使用其他名称,例如: 看起来工作正常,我只尝试简化一下: :

  • 问题内容: 可以说我有以下熊猫数据框: 我可以根据特定的值进行子集化: 但是如何根据值列表进行子集设置呢?-这样的东西: 问题答案: 您可以使用方法: 并得到相反的用法:

  • 我有以下格式的CSV数据: 列属于数据类型。我想做的是删除所有具有非数字位置标签的行。因此,根据上表,我的期望输出为: 现在,我可以用以下方式硬编码解决方案: 这是受以下帖子的启发: 如何从特定列中包含特定字符串的数据框中删除行? 然而,我所寻找的是一个通用的解决方案,它将适用于上述任何类型的表。

  • 问题内容: 我在不同的列中有数据,但是我不知道如何提取数据以将其保存在另一个变量中。 如何选择然后将其保存到df1中? 我试过了 似乎没有任何工作。 问题答案: 列名(字符串)无法按照你尝试的方式进行切片。 在这里,你有两个选择。如果从上下文中知道要切出哪些变量,则可以通过将列表传递给语法来仅返回那些列的视图。 或者,如果需要对它们进行数字索引而不是按其名称进行索引(例如,你的代码应在不知道前两列

  • 问题内容: 我使用以下内容创建了一个数据框: 我想获得含有从每列的数据帧具有在他们的名字。这只是我的问题的一个简单版本,因此我的实际数据框将具有更多列。 问题答案: 替代方法:

  • 问题内容: 我正在解析包含字符串对象行的pandas数据框。我有一个关键字参考列表,需要从参考列表中删除包含任何单词的每一行。 目前,我这样做是这样的: 不能扩展到数千个单词。 但是,当我这样做时: 我产生错误, 第一个参数必须是字符串或编译模式 。 按照[此解决方案,我尝试了: 这不会引发异常,但不会解析所有单词。 如何有效地使用带有单词列表的str.contains? 问题答案: 对于可扩展的