我想用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.
答案 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列表-它们通常比对象系列快。