簡體   English   中英

如何根據字符串值列表對熊貓數據框進行子集設置?

[英]How do I subset a pandas data frame based on a list of string values?

我有一個dF,它的長度超過10萬行,寬度為幾列-沒什么瘋狂的。 我試圖基於約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'

我已經通過查看列表中是否存在值來檢查了類似的問題文檔細分數據集的子集,但這使我無處可去,而我對丟失的內容感到有些困惑。 真的會感謝別人的建議!

我相信您的狗名欄中有一個列表。

這工作正常:

>>> 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}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM