Dies ist schwierig zu pinnen, aber es scheint, dass ich einen Multiindex in einem Datenframe aus einer Kalkulationstabelle mit pandas.read_excel
nicht verwenden kann. Ich habe alle Dateien in einem Gist platziertFehler beim Zugriff auf MultiIndex in Dataframe aus Tabelle
df = pd.read_excel('small.xlsx')
df.set_index(['qrsid','locus'], inplace=True)
print(('dkdkd', 'kdkd') in df.index)
Erzeugt ein Fehler,
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
Ein ähnlicher Datenrahmen mit Multi-Index von Pandas Primitiven erstellt funktioniert gut,
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)
ich kann Finde keine Unterschiede zwischen den beiden Datenrahmen heraus. Beide haben die gleiche df.dtypes
. df.index
auf beiden sehen identisch aus. Kann mir jemand sagen, warum der Zugriff auf den Index der ersten fehlschlägt?
$ python --version
Python 2.7.6
$ python -c 'import pandas; print pandas.__version__'
0.18.0