У меня есть несколько рядов переменных переменной длины с некоторыми нулями. Одним из примеров является:pandas IndexError/TypeError несогласованность с значениями NaN
In [108]: s0 = pd.Series([['a', 'b'],['c'],np.nan])
In [109]: s0
Out[109]:
0 [a, b]
1 [c]
2 NaN
dtype: object
а другой содержит все NaNs
:
In [110]: s1 = pd.Series([np.nan,np.nan])
In [111]: s1
Out[111]:
0 NaN
1 NaN
dtype: float64
мне нужен последний элемент в каждом списке, который является простым:
In [112]: s0.map(lambda x: x[-1] if isinstance(x,list) else x)
Out[112]:
0 b
1 c
2 NaN
dtype: object
Но в то время как добраться до этого я обнаружили, что без isinstance
, когда индексные дроссели на NaNs
делают это по-разному на s0
и 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.
Может кто-нибудь объяснить, почему? Это ошибка? Я использую Pandas 0.16.2 и Python 3.4.3.
Интересный вопрос. Это связано с тем, как работает 'pd.Series', поскольку попытка реплицировать это с помощью' list' и 'np.array' приводит к появлению только' TypeError'. – DeepSpace
Пробовали ли вы кортежи, а не списки? По моему опыту кортежи в кадрах данных работают намного лучше. Не уверен, что это касается вашей проблемы, поскольку я не пытался воссоздать –