Diese Frage ist seltsam, da ich weiß, wie etwas zu tun, aber ich weiß nicht, warum ich es nicht anders kann.Get Pandas DataFrame erste Spalte
Angenommen einfacher Datenrahmen:
import pandasas pd
a = pd.DataFrame([[0,1], [2,3]])
ich diesen Datenrahmen kann sehr leicht in Scheiben schneiden, erste Spalte ist a[[0]]
ist die zweite a[[1]]
. Einfach ist es nicht?
Jetzt haben wir komplexeren Datenrahmen. Dies ist Teil meines Code:
var_vec = [i for i in range(100)]
num_of_sites = 100
row_names = ["_".join(["loc", str(i)]) for i in
range(1,num_of_sites + 1)]
frame = pd.DataFrame(var_vec, columns = ["Variable"], index = row_names)
spec_ab = [i**3 for i in range(100)]
frame[1] = spec_ab
Datenrahmen frame
ist auch Pandas Datenrahmen, wie ein. Ich kann zweite Spalte sehr leicht als frame[[1]]
. Aber wenn ich frame[[0]]
versuchen bekomme ich einen Fehler:
Traceback (most recent call last):
File "<ipython-input-55-0c56ffb47d0d>", line 1, in <module>
frame[[0]]
File "C:\Users\Robert\Desktop\Záloha\WinPython-64bit-3.5.2.2\python- 3.5.2.amd64\lib\site-packages\pandas\core\frame.py", line 1991, in __getitem__
return self._getitem_array(key)
File "C:\Users\Robert\Desktop\Záloha\WinPython-64bit-3.5.2.2\python- 3.5.2.amd64\lib\site-packages\pandas\core\frame.py", line 2035, in _getitem_array
indexer = self.ix._convert_to_indexer(key, axis=1)
File "C:\Users\Robert\Desktop\Záloha\WinPython-64bit-3.5.2.2\python- 3.5.2.amd64\lib\site-packages\pandas\core\indexing.py", line 1184, in _convert_to_indexer
indexer = labels._convert_list_indexer(objarr, kind=self.name)
File "C:\Users\Robert\Desktop\Záloha\WinPython-64bit-3.5.2.2\python- 3.5.2.amd64\lib\site-packages\pandas\indexes\base.py", line 1112, in _convert_list_indexer
return maybe_convert_indices(indexer, len(self))
File "C:\Users\Robert\Desktop\Záloha\WinPython-64bit-3.5.2.2\python- 3.5.2.amd64\lib\site-packages\pandas\core\indexing.py", line 1856, in maybe_convert_indices
raise IndexError("indices are out-of-bounds")
IndexError: indices are out-of-bounds
ich noch frame.iloc[:,0]
verwenden, aber Problem ist, dass ich nicht verstehe, warum ich einfach Aufschneiden von [[]]
verwenden kann nicht? Ich benutze Winpython Spyder 3, wenn das hilft.
Es funktioniert in der ersten DataFrame, weil dieser eine Spalte namens "0" hat. Es ist zufällig die erste Spalte, aber das muss nicht sein. Es könnte eine andere Spalte mit diesem Namen gewesen sein. Um dasselbe zu verwenden, müssen Sie auf den Namen zugreifen ('frame [['Variable']] 'vorausgesetzt, Sie möchten einen DataFrame zurückgeben - keine Serie). – ayhan