2016-10-17 14 views
0

私は2つのSeriesオブジェクトを持っています。私は、それらをDataFramesに変換し、両方を同じDataFrameに別々の列として配置しようとしました。なんらかの理由で、私は理解できません。シリーズの1つはDataFrameに幸せに変換され、もう1つはコンテナ(リストまたはdict)に配置されたときに変換されることを拒否します。再インデックス化エラーが発生しますが、どちらのシリーズのインデックスにも重複はありません。SeriesをDataFrameに変換する奇妙な「再インデックス化エラー」

import pickle 
import pandas as pd 


s1 = pickle.load(open('s1.p', 'rb')) 
s2 = pickle.load(open('s2.p', 'rb')) 
print(s1.head(10)) 
print(s2.head(10)) 

pd.DataFrame(s1) # <--- works fine 
pd.DataFrame(s2) # <--- works fine 
pd.DataFrame([s1]) # <--- works fine 
# pd.DataFrame([s2]) # <--- doesn't work 
# pd.DataFrame([s1, s2]) # <--- doesn't work 
pd.DataFrame({s1.name: s1}) # <--- works fine 
pd.DataFrame({s2.name: s2}) # <--- works fine 
pd.DataFrame({s1.name: s1, s2.name: s1}) # <--- works fine 
# pd.DataFrame({s1.name: s1, s2.name: s2}) # <--- doesn't work 

ここには出力がありますが、ここでは表示されませんが、インデックス値の間に重複があります。彼らはちょうど異なる順序です。インデックスを同じDataFrameに結合するときにインデックスを一致させたい。最後の行がコメントアウトされ

id 
801120 42.01 
801138 50.18 
801139 50.01 
802101 53.77 
802110 56.52 
802112 47.37 
802113 46.52 
802114 46.58 
802115 42.59 
802117 40.85 
Name: age, dtype: float64 
id 
A32067 0.39083 
A32195 0.28506 
A01685 0.36432 
A11124 0.55649 
A32020 0.41524 
A32021 0.43788 
A32098 0.49206 
A00699 0.37515 
A32158 0.58793 
A14139 0.47413 
Name: lh_vtx_000001, dtype: float64 

トレースバック:

Traceback (most recent call last): 
    File "/Users/sm2286/Documents/Vertex/test.py", line 18, in <module> 
    pd.DataFrame({s1.name: s1, s2.name: s2}) # <--- doesn't work 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/core/frame.py", line 224, in __init__ 
    mgr = self._init_dict(data, index, columns, dtype=dtype) 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/core/frame.py", line 360, in _init_dict 
    return _arrays_to_mgr(arrays, data_names, index, columns, dtype=dtype) 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/core/frame.py", line 5236, in _arrays_to_mgr 
    arrays = _homogenize(arrays, index, dtype) 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/core/frame.py", line 5534, in _homogenize 
    v = v.reindex(index, copy=False) 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/core/series.py", line 2287, in reindex 
    return super(Series, self).reindex(index=index, **kwargs) 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/core/generic.py", line 2229, in reindex 
    fill_value, copy).__finalize__(self) 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/core/generic.py", line 2247, in _reindex_axes 
    copy=copy, allow_dups=False) 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/core/generic.py", line 2341, in _reindex_with_indexers 
    copy=copy) 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/core/internals.py", line 3586, in reindex_indexer 
    self.axes[axis]._can_reindex(indexer) 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/indexes/base.py", line 2293, in _can_reindex 
    raise ValueError("cannot reindex from a duplicate axis") 
ValueError: cannot reindex from a duplicate axis 

トレースバックライン13がアンコメントである:

Traceback (most recent call last): 
    File "/Users/sm2286/Documents/Vertex/test.py", line 13, in <module> 
    pd.DataFrame([s2]) # <--- doesn't work 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/core/frame.py", line 263, in __init__ 
    arrays, columns = _to_arrays(data, columns, dtype=dtype) 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/core/frame.py", line 5359, in _to_arrays 
    dtype=dtype) 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/core/frame.py", line 5453, in _list_of_series_to_arrays 
    indexer = indexer_cache[id(index)] = index.get_indexer(columns) 
    File "/Users/sm2286/anaconda3/lib/python3.5/site-packages/pandas/indexes/base.py", line 2082, in get_indexer 
    raise InvalidIndexError('Reindexing only valid with uniquely' 
pandas.indexes.base.InvalidIndexError: Reindexing only valid with uniquely valued Index objects 
+0

printheadコマンドの出力を含めることはできますか? – IanS

+0

また完全なトレースバックをしてください。 – ayhan

+0

申し訳ありません、投稿する前にそれを行うことです... – sammosummo

答えて

0

以上の調査の後シリーズの違いは、後者に含まれるが欠落していることでした値。それらを削除すると問題が解決しました。