Ich habe mehrere Reihen von Listen variabler Länge mit einigen Nullen. Ein Beispiel dafür ist:pandas IndexError/TypeError Inkonsistenz mit NaN-Werten
In [108]: s0 = pd.Series([['a', 'b'],['c'],np.nan])
In [109]: s0
Out[109]:
0 [a, b]
1 [c]
2 NaN
dtype: object
aber eine andere enthält alle NaNs
:
In [110]: s1 = pd.Series([np.nan,np.nan])
In [111]: s1
Out[111]:
0 NaN
1 NaN
dtype: float64
Ich muss das letzte Element in jeder Liste, die einfach ist:
In [112]: s0.map(lambda x: x[-1] if isinstance(x,list) else x)
Out[112]:
0 b
1 c
2 NaN
dtype: object
Aber während dieser ich immer entdeckt, dass, ohne die isinstance
, wenn die Indizierung Drosseln auf der NaNs
es so anders auf s0
und s1
:
In [113]: s0.map(lambda x: x[-1])
...
TypeError: 'float' object is not subscriptable
In [114]: s1.map(lamda x: x[-1])
...
IndexError: invalid index to scalar variable.
Kann mir jemand erklären, warum? Ist das ein Fehler? Ich benutze Pandas 0.16.2 und Python 3.4.3.
Interessante Frage. Es hat mit der Funktionsweise von 'pd.Series' zu tun, da der Versuch, dies mit' list' und 'np.array' zu replizieren, nur mit' TypeError' erfolgt. – DeepSpace
Haben Sie Tupel anstatt Listen versucht? Meiner Erfahrung nach arbeiten Tupel in Datenrahmen viel besser. Nicht sicher, dass dies Ihr Problem anspricht, da ich nicht versucht habe, –