2013-02-06 6 views
5

私は 'str.contrains()'メソッドを使用したいDataFrameを持っています。 pandas + dataframe - select by partial stringを読むと、私はこれを行う方法を見つけたと信じていました。しかし、私は値のエラーを取得し続けます。パンダでのスライス時の値エラー

マイDATAFRAMEは以下の通りである:

ID,ENROLLMENT_DATE,TRAINER_MANAGING,TRAINER_OPERATOR,FIRST_VISIT_DATE 
1536D,12-Feb-12,"06DA1B3-Lebanon NH",,15-Feb-12 
F15D,18-May-12,"06405B2-Lebanon NH",,25-Jul-12 
8096,8-Aug-12,"0643D38-Hanover NH","0643D38-Hanover NH",25-Jun-12 
A036,1-Apr-12,"06CB8CF-Hanover NH","06CB8CF-Hanover NH",9-Aug-12 
8944,19-Feb-12,"06D26AD-Hanover NH",,4-Feb-12 
1004E,8-Jun-12,"06388B2-Lebanon NH",,24-Dec-11 
11795,3-Jul-12,"0649597-White River VT","0649597-White River VT",30-Mar-12 
30D7,11-Nov-12,"06D95A3-Hanover NH","06D95A3-Hanover NH",30-Nov-11 
3AE2,21-Feb-12,"06405B2-Lebanon NH",,26-Oct-12 
B0FE,17-Feb-12,"06D1B9D-Hartland VT",,16-Feb-12 
127A1,11-Dec-11,"064456E-Hanover NH","064456E-Hanover NH",11-Nov-12 
161FF,20-Feb-12,"0643D38-Hanover NH","0643D38-Hanover NH",3-Jul-12 
A036,30-Nov-11,"063B208-Randolph VT","063B208-Randolph VT", 
475B,25-Sep-12,"06D26AD-Hanover NH",,5-Nov-12 
151A3,7-Mar-12,"06388B2-Lebanon NH",,16-Nov-12 
CA62,3-Jan-12,,, 
D31B,18-Dec-11,"06405B2-Lebanon NH",,9-Jan-12 
20F5,8-Jul-12,"0669C50-Randolph VT",,3-Feb-12 
8096,19-Dec-11,"0649597-White River VT","0649597-White River VT",9-Apr-12 
14E48,1-Aug-12,"06D3206-Hanover NH",, 
177F8,20-Aug-12,"063B208-Randolph VT","063B208-Randolph VT",5-May-12 
553E,11-Oct-12,"06D95A3-Hanover NH","06D95A3-Hanover NH",8-Mar-12 
12D5F,18-Jul-12,"0649597-White River VT","0649597-White River VT",2-Nov-12 
C6DC,13-Apr-12,"06388B2-Lebanon NH",, 
11795,27-Feb-12,"0643D38-Hanover NH","0643D38-Hanover NH",19-Jun-12 
17B43,11-Aug-12,,,22-Oct-12 
A036,11-Aug-12,"06D3206-Hanover NH",,19-Jun-12 

その後、私は次のコードを実行します。

test = pandas.read_csv('testcsv.csv') 
test[test.TRAINER_MANAGING.str.contains('Han', na=False)] 

を、私は次のエラーを取得する:

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-54-e0c4624c9346> in <module>() 
----> 1 test[test.TRAINER_MANAGING.str.contains('Han', na=False)] 

.virtualenvs/ipython/lib/python2.7/site-packages/pandas/core/frame.pyc in __getitem__(self, key) 
    1958 
    1959    # also raises Exception if object array with NA values 
-> 1960    if com._is_bool_indexer(key): 
    1961     key = np.asarray(key, dtype=bool) 
    1962    return self._getitem_array(key) 

.virtualenvs/ipython/lib/python2.7/site-packages/pandas/core/common.pyc in _is_bool_indexer(key) 
    685   if not lib.is_bool_array(key): 
    686    if isnull(key).any(): 
--> 687     raise ValueError('cannot index with vector containing ' 
    688         'NA/NaN values') 
    689    return False 

ValueError: cannot index with vector containing NA/NaN values 

私はのように私は感じます単純なものが欠けている。どんな助けもありがとう。

+2

が[githubに関する問題](https://github.com/pydata/pandas/issues/2806)として追加されました。 –

答えて

15

文字列検索ではまだナノ値が返されますが、スライス操作はブール値でのみ機能します。 'na = False'は動作していないようです(この場合は?)、最新の(リリースされた)Pandasバージョンで自分のマシンに複製できます。

あなたは最初のような結果に.fillna()関数を適用することによって、それを回避することができます返す

test[test.TRAINER_MANAGING.str.contains('Han').fillna(False)] 

 ID ENROLLMENT_DATE TRAINER_MANAGING TRAINER_OPERATOR FIRST_VISIT_DATE 
2 8096  8-Aug-12 0643D38-Hanover NH 0643D38-Hanover NH  25-Jun-12 
3 A036  1-Apr-12 06CB8CF-Hanover NH 06CB8CF-Hanover NH   9-Aug-12 
4 8944  19-Feb-12 06D26AD-Hanover NH     NaN   4-Feb-12 
7 30D7  11-Nov-12 06D95A3-Hanover NH 06D95A3-Hanover NH  30-Nov-11 
10 127A1  11-Dec-11 064456E-Hanover NH 064456E-Hanover NH  11-Nov-12 
11 161FF  20-Feb-12 0643D38-Hanover NH 0643D38-Hanover NH   3-Jul-12 
13 475B  25-Sep-12 06D26AD-Hanover NH     NaN   5-Nov-12 
19 14E48  1-Aug-12 06D3206-Hanover NH     NaN    NaN 
21 553E  11-Oct-12 06D95A3-Hanover NH 06D95A3-Hanover NH   8-Mar-12 
24 11795  27-Feb-12 0643D38-Hanover NH 0643D38-Hanover NH  19-Jun-12 
26 A036  11-Aug-12 06D3206-Hanover NH     NaN  19-Jun-12 

私は前にstr.contains機能を使用したことがありません正しく動作しないのかどうかわかりません。あなたの例のようにうまくいけば、githubに関する問題を開くべきです。

+0

ありがとうございました。私はgithubに投稿するかもしれませんが、私はファンダになると完全なnewbですので、私は自分自身を恥ずかしくする前に私はここで私の質問を試してみると思った。もしあなたがそれが行く価値があると思うなら、私はそこにも投稿します。 – BigHandsome

+1

@BigHandsome私はまた、ドキュメントでは「na」が値を記入するべきだと思っていると思っています。(奇妙なことですが) –

+0

@AndyHayden API doc [1]とこのチケット[2]を読み直した後、私のコードはうまくいくはずです。しかし、私はこのすべてにかなり新しいので、私はあなたにチケットを提出すべきかどうかについて延期するつもりです。 [1]:http://pandas.pydata.org/pandas-docs/stable/basics.html?highlight = startswith#ベクトル化文字列メソッド [2]:https://github.com/pydata/ pandas/issues/1689 – BigHandsome

関連する問題