将项目添加到 pandas.Series?
Posted
技术标签:
【中文标题】将项目添加到 pandas.Series?【英文标题】:Add item to pandas.Series? 【发布时间】:2020-09-19 08:54:11 【问题描述】:我想给我的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'
我该如何解决这个问题?
【问题讨论】:
How to add a single item to a Pandas Series的可能重复 这些问题都不是我的。另外,您的问题是 12 个月前提出的,但我链接到的问题是两年多前提出的。 【参考方案1】:将附加项转换为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])))
【讨论】:
从今天开始,.set_value() 已被弃用,请改用 .at()/.iat() 正如 Comte 所说,不推荐使用 set_value。有关正确解决方案,请参阅 Gormoruk 的答案。 (pandas.pydata.org/pandas-docs/version/0.23.4/generated/…)【参考方案2】:使用set_value
会产生警告:
FutureWarning:set_value 已弃用,将来会被删除 发布。请改用 .at[] 或 .iat[] 访问器
所以你可以像这样使用at
:
input.at[input.index[-1]+1]=6
【讨论】:
【参考方案3】:这里是单行答案 这取决于数组是如何定义的。如果我们使用 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
【讨论】:
以上是关于将项目添加到 pandas.Series?的主要内容,如果未能解决你的问题,请参考以下文章
pandas.series.rolling.apply 方法似乎将 Series 隐式转换为 numpy 数组
无法将 pandas.Series 转换为 dtype=np.float64 的 numpy.array
将 pandas.Series 从 dtype 对象转换为浮点数,将错误转换为 nans