我有一个超过100k行长的dF,还有几列宽的- nothing。我正在尝试根据大约4000个字符串的列表来设置行的子集,但我正在努力弄清楚如何做到这一点。有没有一种方法可以使用像这样的东西来进行子集。
dF如下所示
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 question、docs和this,通过查看列表中是否存在值来确定数据帧的子集,但这让我一无所获,我对我遗漏的内容感到有点困惑。真的很感谢别人的建议!
发布于 2016-02-12 06:56:48
我相信你的狗名字栏里有一份名单。
这可以很好地工作:
>>> 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'找到那些坏狗:
>>> df[[isinstance(dog, list) for dog in df.dog_name]]
dog_name count
4 [a] 2要查找列中的所有数据类型:
>>> set((type(dog) for dog in df.dog_name))
{list, str}https://stackoverflow.com/questions/35351629
复制相似问题