2017-12-07 4 views
2

私はパンダのドキュメントを読んでおり、CategoricalIndex - MultiIndex/Advanced Indexingの最初の例に従うと、CategoricalDtypeクラスから来ているようです。ここで pandas CategoricalDtype:__new __()は1つの位置引数をとりますが、2が与えられました

コード(ドキュメントの例)です:ちょうどチェックする

>>> import pandas as pd 
>>> import numpy as np 
>>> from pandas.api.types import CategoricalDtype 
>>> df = pd.DataFrame({'A': np.arange(6),'B': list('aabbca')}) 
>>> df 
    A B 
0 0 a 
1 1 a 
2 2 b 
3 3 b 
4 4 c 
5 5 a 

>>> df['B'] = df['B'].astype(CategoricalDtype(list('cab'))) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: __new__() takes 1 positional argument but 2 were given 

、私は私のコンソールpandas documentation - pandas.api.types.CategoricalDtypeに与えられた例では、入力されたが、エラーが解消されない:

>>> t = CategoricalDtype(categories=['b', 'a'], ordered=True) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: __new__() got an unexpected keyword argument 'categories' 
>>> pd.Series(['a', 'b', 'a', 'c'], dtype=t) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 't' is not defined 

でしたCategoricalDtypeクラスに問題があるか、何か不足していますか?

+0

あなたのパンダのバージョンは何ですか?私はこの問題をPandas 0.21.0 – MaxU

+0

@MaxU私の悪いを使用して再現することはできません。私はバージョン0.20.1を持っていた。私はこのクラスがバージョン0.21.0の新機能であることに気付かなかった。更新され、すべて正常に動作します。 – Jazz

答えて

1

これはPandas 0.21以降で正しく動作します。

In [201]: df['B'].astype('category') 
Out[201]: 
0 a 
1 a 
2 b 
3 b 
4 c 
5 a 
Name: B, dtype: category 
Categories (3, object): [a, b, c] 

か::私たちはいずれかを実行することができ、古いバージョンの

In [202]: pd.Categorical(df['B'], categories=list('cab')) 
Out[202]: 
[a, a, b, b, c, a] 
Categories (3, object): [c, a, b] 
関連する問題