我想为pandas.Series
添加一个整数
这是我的代码:
import pandas as pd
input = pd.Series([1,2,3,4,5])
input.append(6)
当我运行时,我收到以下错误:
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
f.append(6)
File "C:\Python33\lib\site-packages\pandas\core\series.py", line 2047, in append
verify_integrity=verify_integrity)
File "C:\Python33\lib\site-packages\pandas\tools\merge.py", line 878, in concat
verify_integrity=verify_integrity)
File "C:\Python33\lib\site-packages\pandas\tools\merge.py", line 954, in __init__
self.new_axes = self._get_new_axes()
File "C:\Python33\lib\site-packages\pandas\tools\merge.py", line 1146, in _get_new_axes
concat_axis = self._get_concat_axis()
File "C:\Python33\lib\site-packages\pandas\tools\merge.py", line 1163, in _get_concat_axis
indexes = [x.index for x in self.objs]
File "C:\Python33\lib\site-packages\pandas\tools\merge.py", line 1163, in <listcomp>
indexes = [x.index for x in self.objs]
AttributeError: 'int' object has no attribute 'index'
我该如何解决?
答案 0 :(得分:24)
将附加项目转换为Series
:
>>> ds = pd.Series([1,2,3,4,5])
>>> ds.append(pd.Series([6]))
0 1
1 2
2 3
3 4
4 5
0 6
dtype: int64
或使用DataFrame
:
>>> df = pd.DataFrame(ds)
>>> df.append([6], ignore_index=True)
0
0 1
1 2
2 3
3 4
4 5
5 6
和最后一个选项,如果您的索引没有间隙,
>>> ds.set_value(max(ds.index) + 1, 6)
0 1
1 2
2 3
3 4
4 5
5 6
dtype: int64
你可以使用numpy作为最后的手段:
>>> import numpy as np
>>> pd.Series(np.concatenate((ds.values, [6])))
答案 1 :(得分:0)
set_value显示警告:
FutureWarning:不建议使用set_value,以后将其删除 发布。请改用.at []或.iat []访问器
因此您可以按以下方式使用“ at”:
input.at[input.index[-1]+1]=6
答案 2 :(得分:0)
这是单行答案,这取决于数组的定义方式。如果我们使用Series是一个一维数组。使用类似x [index] = new value
的数组符号示例
import pandas as pd
input = pd.Series([1,2,3,4,5])
newval = 7 # say
input[len(input)] = newval
或 如果直接定义数组,请使用append。
#if input is defined as []
input2 = [1, 2]
#input2[len(input2)] = 3 # does not work
input2.append(3) #works
input2