用列表填充熊猫系列

时间:2019-06-27 13:50:44

标签: python pandas list

我想用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 个答案:

答案 0 :(得分:2)

这是因为假定初始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列表-它们通常比对象系列快。