2017-06-23 13 views
1

私は基本的に列に目を通すしようとしていると、その列が一意の値を持っているならば、1を入力しますが、それはそれをdoesntの場合だけではNaNになり、私のデータフレームは、このようになりますしています:ユニークな値のpython

Street    Number 
0 1312 Oak Avenue  1 
1 14212 central Ave 2 
2 981 franklin way 1 

私は次の一意の値に番号1を置くために使用したコードは次のとおりです。私はなぜ知らない「ではなく、インデックスに」:私はこれを実行すると

df.loc[(df['Street'].unique()), 'Unique'] = '1' 

は、しかし、私はこのエラーKeyError例外を取得します。私は、Number列でこれを実行してみましたし、私はされて私の望ましい結果を得る:とてもユニークであるものを指定し、私の列がユニークと呼ばれ、それが一意である行ずつ置く

Street   Number Unique 
0 1312 Oak Avenue  1   NaN 
1 14212 central Ave 2   1 
2 981 franklin way 1   1 

をし、NaNをすることにより重複するもの。この場合、私は2つのものを持っており、それは最初のNaNと2番目のNaNを生成し、それは1を提供し、1は2であることから、それはユニークなので1も提供します。私はなぜ私がストリートコラムのためのそのエラーを取得しているのか分からない。

答えて

1

これは実際にあなたの望む結果を生むものではありません。 df['Number'].unique()の出力、array([1, 2], dtype=int64)は、インデックスに登録されたばかりです。 Number[3, 4, 3]の代わりに、その列に同じ問題が発生したとします。あなたが探しているものについては

、ないduplicated選択、またはあなたが重複を落とした後に残っている場所、uniqueよりも良いかもしれません:

df.loc[~(df['Number'].duplicated()), 'Unique'] = 1 
df 
Out[51]: 
       Street Number Unique 
0 1312 Oak Avenue  1 1.0 
1 14212 central Ave  2 1.0 
2 981 franklin way  1 NaN 


df.loc[df['Number'].drop_duplicates(), 'Unique'] = 1 
df 
Out[63]: 
       Street Number Unique 
0 1312 Oak Avenue  1  NaN 
1 14212 central Ave  2  1.0 
2 981 franklin way  1  1.0 
関連する問題