Python 如何基于字符串值列表对数据帧进行子集划分?

Python 如何基于字符串值列表对数据帧进行子集划分?,python,pandas,Python,Pandas,我有一个超过10万行长的dF,还有几列宽-没什么疯狂的。我试图根据大约4000个字符串的列表对行进行子集划分,但我很难弄清楚如何做到这一点。有没有一种方法可以使用类似的方法来子集 dF看起来像这样 dog_name count =================== Jenny 2 Fido 4 Joey 7 Yeller 2 字符串列表包含变量dog\u name\u list=['Fido','Yeller'] 我试过一些类似

我有一个超过10万行长的dF,还有几列宽-没什么疯狂的。我试图根据大约4000个字符串的列表对行进行子集划分,但我很难弄清楚如何做到这一点。有没有一种方法可以使用类似的方法来子集

dF看起来像这样

dog_name    count
===================
Jenny        2
Fido         4
Joey         7
Yeller       2
字符串列表包含变量
dog\u name\u list=['Fido','Yeller']

我试过一些类似的方法
df[df['dog_name'].isin(dog_name_list)
,但我得到了一个有趣的错误:
不可损坏的类型:“list”


通过查看列表中是否存在值,我已经检查了a、the和rundown以进行子集数据帧的设置,但这让我无从得知,我对所缺少的内容感到有点困惑。非常感谢有人的建议!

我相信您的狗名列中有一个列表

这很好:

>>> df[df['dog_name'].isin(['Fido', 'Yeller'])]
  dog_name  count
1     Fido      4
3   Yeller      2
但如果您添加一个列表:

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'
要查找列中的所有数据类型,请执行以下操作:

>>> set((type(dog) for dog in df.dog_name))
{list, str}

检查您的
dog\u name
列中是否有任何列表:
any((df.dog\u name中v的isinstance(v,list))
您的命令是正确的,可能是Alexander指出的数据问题。嗯,这真的很奇怪。@Alexander,奇怪的是
any((df.dog\u name中v的isinstance(v,list))
返回
false
尝试确保数据都是字符串:
all((df.dog\u name中dog的isinstance(dog,str))
>>> set((type(dog) for dog in df.dog_name))
{list, str}