首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据字符串值列表设置pandas数据框的子集?

如何根据字符串值列表设置pandas数据框的子集?
EN

Stack Overflow用户
提问于 2016-02-12 06:46:57
回答 1查看 9.2K关注 0票数 12

我有一个超过100k行长的dF,还有几列宽的- nothing。我正在尝试根据大约4000个字符串的列表来设置行的子集,但我正在努力弄清楚如何做到这一点。有没有一种方法可以使用像这样的东西来进行子集。

dF如下所示

代码语言:javascript
复制
dog_name    count
===================
Jenny        2
Fido         4
Joey         7
Yeller       2

字符串列表包含变量dog_name_list=['Fido', 'Yeller']

我尝试过类似于df[df['dog_name'].isin(dog_name_list)的东西,但得到了一个有趣的错误:unhashable type: 'list'

我已经检查了similar questiondocsthis,通过查看列表中是否存在值来确定数据帧的子集,但这让我一无所获,我对我遗漏的内容感到有点困惑。真的很感谢别人的建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-12 06:56:48

我相信你的狗名字栏里有一份名单。

这可以很好地工作:

代码语言:javascript
复制
>>> df[df['dog_name'].isin(['Fido', 'Yeller'])]
  dog_name  count
1     Fido      4
3   Yeller      2

但是如果你添加了一个列表:

代码语言:javascript
复制
df.ix[4] = (['a'], 2)
>>> df
  dog_name  count
0    Jenny      2
1     Fido      4
2     Joey      7
3   Yeller      2
4      [a]      2

>>> df[df['dog_name'].isin(['Fido', 'Yeller'])]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-20-1b68dd948f39> in <module>()
----> 1 df[df['dog_name'].isin(['Fido', 'Yeller'])]
...
pandas/lib.pyx in pandas.lib.ismember (pandas/lib.c:5014)()

TypeError: unhashable type: 'list'

找到那些坏狗:

代码语言:javascript
复制
>>> df[[isinstance(dog, list) for dog in df.dog_name]]
  dog_name  count
4      [a]      2

要查找列中的所有数据类型:

代码语言:javascript
复制
>>> set((type(dog) for dog in df.dog_name))
{list, str}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35351629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档