2017-05-22 9 views
0

Ich habe die .set_index() Funktion eingestellt auf die erste Spalte als meinen Index zu den Zeilen in meinem Datenrahmen verwendet:Zugriff Pandas Datenrahmen als verschachtelte Liste

>>> import pandas as pd 
>>> df = pd.DataFrame([['x', 1,2,3,4,5], ['y', 6,7,8,9,10], ['z', 11,12,13,14,15]]) 
>>> df.columns = ['index', 'a', 'b', 'c', 'd', 'e'] 
>>> df = df.set_index(['index']) 
>>> df 
     a b c d e 
index      
x  1 2 3 4 5 
y  6 7 8 9 10 
z  11 12 13 14 15 

Wie sollte der Datenrahmen so manipuliert werden, dass ich sein kann Zugriff wie eine verschachtelte Liste? z.B. Folgendes möglich ist:

>>> df['x'] 
[1, 2, 3, 4, 5] 

>>> df['x']['a'] 
1 

>>> df['x']['a', 'b'] 
(1, 2) 

>>> df['x']['a', 'd', 'c'] 
(1, 4, 3) 

Ich habe versucht, Zugriff auf df['x'] nach dem Index einstellen, aber es wirft einen Fehler ist, dass der richtige Weg, um die x Zeile zuzugreifen?

>>> import pandas as pd 
>>> df = pd.DataFrame([['x', 1,2,3,4,5], ['y', 6,7,8,9,10], ['z', 11,12,13,14,15]]) 
>>> df.columns = ['index', 'a', 'b', 'c', 'd', 'e'] 
>>> df = df.set_index(['index']) 
>>> df 
     a b c d e 
index      
x  1 2 3 4 5 
y  6 7 8 9 10 
z  11 12 13 14 15 
>>> df['x'] 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/site-packages/pandas/core/indexes/base.py", line 2393, in get_loc 
    return self._engine.get_loc(key) 
    File "pandas/_libs/index.pyx", line 132, in pandas._libs.index.IndexEngine.get_loc (pandas/_libs/index.c:5239) 
    File "pandas/_libs/index.pyx", line 154, in pandas._libs.index.IndexEngine.get_loc (pandas/_libs/index.c:5085) 
    File "pandas/_libs/hashtable_class_helper.pxi", line 1207, in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas/_libs/hashtable.c:20405) 
    File "pandas/_libs/hashtable_class_helper.pxi", line 1215, in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas/_libs/hashtable.c:20359) 
KeyError: 'x' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python3.5/site-packages/pandas/core/frame.py", line 2062, in __getitem__ 
    return self._getitem_column(key) 
    File "/usr/local/lib/python3.5/site-packages/pandas/core/frame.py", line 2069, in _getitem_column 
    return self._get_item_cache(key) 
    File "/usr/local/lib/python3.5/site-packages/pandas/core/generic.py", line 1534, in _get_item_cache 
    values = self._data.get(item) 
    File "/usr/local/lib/python3.5/site-packages/pandas/core/internals.py", line 3590, in get 
    loc = self.items.get_loc(item) 
    File "/usr/local/lib/python3.5/site-packages/pandas/core/indexes/base.py", line 2395, in get_loc 
    return self._engine.get_loc(self._maybe_cast_indexer(key)) 
    File "pandas/_libs/index.pyx", line 132, in pandas._libs.index.IndexEngine.get_loc (pandas/_libs/index.c:5239) 
    File "pandas/_libs/index.pyx", line 154, in pandas._libs.index.IndexEngine.get_loc (pandas/_libs/index.c:5085) 
    File "pandas/_libs/hashtable_class_helper.pxi", line 1207, in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas/_libs/hashtable.c:20405) 
    File "pandas/_libs/hashtable_class_helper.pxi", line 1215, in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas/_libs/hashtable.c:20359) 
KeyError: 'x' 

Antwort

1

Sie können erhalten Verwenden Sie loc.

Von Ihrem Beispiele:

df['x'] sollte df.loc['x']
df['x']['a']df.loc['x', 'a'] sein sollte, und
df['x']['a', 'd', 'c'] sollte df.loc['x', ['a', 'd', 'c']]

0

Zugriff auf Zeilen sollten loc gemacht werden:

df.loc['x'] 

Reihe und zu Spalte

df.loc['x', ['a', 'c']] 

sein sollte oder Sie können die transponieren

df.T.x 
Verwandte Themen