Заполните серию панд списком - PullRequest
1 голос
/ 27 июня 2019

Я бы хотел заполнить pd.Series() list.

Я пытался сделать следующее:

series = pd.Series(index=['a','b','c','d'])
series['a'] = 2
series['b'] = [2,3]

Это ошибка, которую я получаю.Как я могу заполнить list в pd.Series?

 File "C:\Users\Sergej Shteriev\Anaconda3\lib\site-packages\pandas\core\internals.py", line 940, in setitem
    values[indexer] = value

ValueError: setting an array element with a sequence.

1 Ответ

2 голосов
/ 27 июня 2019

Это потому, что предполагается, что начальный тип 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...