Это потому, что предполагается, что начальный тип dtype является плавающим (поскольку ряд заполнен NaN).
series.dtype
# dtype('float64')
Поскольку списки поддерживаются только столбцами типа object
, вам необходимоприведение перед присвоением.
series = series.astype(object)
series['b'] = [2, 3]
series
a 2 # this is still a float
b [2, 3]
c NaN
d NaN
dtype: object
series.tolist()
# [2.0, [[2, 3]], nan, nan]
Лучше предложить объявить series
как объект с самого начала, если это то, что вы намереваетесь вставить в него.
series = pd.Series(index=['a','b','c','d'], dtype=object)
series['a'] = 2
series['b'] = [2, 3]
series
a 2
b [2, 3]
c NaN
d NaN
dtype: object
series.tolist()
# [2, [2, 3], nan, nan]
ИзКонечно, по причинам производительности я не оправдываю это.Вам лучше использовать списки Python - они обычно быстрее, чем объекты Series.