2016-03-23 12 views
1

Bu, sabitlenmesi zor bir işlemdir, ancak bir elektronik tablodan okunan bir veri tabanına pandas.read_excel ile çok satırlı kullanamıyorum gibi görünüyor. BenDataFrame'deki MultiIndex öğesine elektronik tablodan erişirken hatalar

df = pd.DataFrame({'qrsid':['qb210', 'qb210', 'qb210', 'qb210', 'qb210'], 
       'locus':['gag','gag','gag','gag','gag'], 
       'dpi': [ 800, 1002, 2291, 4444, 212]}) 
df.set_index(['qrsid','locus'], inplace=True) 
print(('dkdkd', 'kdkd') in df.index) 

elimden, panda ilkel oluşturulan çoklu endeks ile benzer bir dataframe çalışıyor

Traceback (most recent call last): 
    File "mindex.py", line 14, in <module> 
    print(('dkdkd', 'kdkd') in df.index) 
    File "/path/venv/local/lib/python2.7/site-packages/pandas/indexes/multi.py", line 947, in __contains__ 
    self.get_loc(key) 
    File "/path/venv/local/lib/python2.7/site-packages/pandas/indexes/multi.py", line 1538, in get_loc 
    if lead_key else (0, len(self))) 
    File "/path/venv/local/lib/python2.7/site-packages/pandas/indexes/multi.py", line 1444, in slice_locs 
    return super(MultiIndex, self).slice_locs(start, end, step, kind=kind) 
    File "/path/venv/local/lib/python2.7/site-packages/pandas/indexes/base.py", line 2879, in slice_locs 
    start_slice = self.get_slice_bound(start, 'left', kind) 
    File "/path/venv/local/lib/python2.7/site-packages/pandas/indexes/multi.py", line 1415, in get_slice_bound 
    return self._partial_tup_index(label, side=side) 
    File "/path/venv/local/lib/python2.7/site-packages/pandas/indexes/multi.py", line 1460, in _partial_tup_index 
    raise TypeError('Level type mismatch: %s' % lab) 
TypeError: Level type mismatch: dkdkd 

, bir hata üretir bir Gist

df = pd.read_excel('small.xlsx') 
df.set_index(['qrsid','locus'], inplace=True) 
print(('dkdkd', 'kdkd') in df.index) 

tüm dosyaları koydum İki veri panosu arasında ne farklı olduğunu anlamaya çalışıyorum. Her ikisi de aynı df.dtypes var. df.index her ikisinde de aynı görünür. Kimse bana ilkindeki başarısızlığa neden erişemediğini söyleyebilir mi?


$ python --version 
Python 2.7.6 
$ python -c 'import pandas; print pandas.__version__' 
0.18.0 

cevap

0

ben bu şimdi bunun neden biliyorum. Ben türlerini basılmış Unicode olarak pandas.indexes.base.Index.is_type_compatible

is_type_compatible: kind=string inferred_type=unicode 

Yani görünüşte pandas.read_excel() okuyor dizelerinde karşılaştırmış ve bu tip uyumsuz basit 'dizeleri' ile olan ediliyor.

Buradaki dizin belirleme hatası iletisi daha fazla bilgi verebilir. Sadece bana 'Seviye tipi uyumsuzluk' demek neredeyse hiç yararlı bilgi sağlamıyor.