2016-08-30 117 views
1

我有一个熊猫索引对象,我想在它的末尾添加一个值。 .append()方法似乎不像人们所期望的那样工作,并且由于我试图添加一个元素,所以我无法在-1的位置插入,因为这会将值放入二进制值中,最后的位置。例如将值添加到熊猫索引对象的末尾

import pandas as pd 
ser = pd.Series([1,2,3,4,5], index=[11,12,13,14,15]) 
indx = ser.index 

说我想将值20添加到索引的末尾。这将引发一个错误:

indx.append(20) 

这将返回[11,12,13,14,20,15]:

indx.insert(-1, 20) 

这工作,但似乎是一个解决方法:

indx.insert(len(indx), 20) 

有什么我失踪?这是熊猫0.18.1。谢谢。

回答

2

您需要传递一组索引值作为参数,同时附加到给定的index对象。

indx.append(pd.Index([20])) # Pass the values inside the list 
Int64Index([11, 12, 13, 14, 15, 20], dtype='int64') 
3

append另需索引作为输入,但如果简单地传递数组状物体union将工作的方法:

indx.union([20]) 

注意,在大熊猫索引对象是不可变的,因此任何这样的操作将返回一个新的索引而不是修改现有索引。

2

你可能想尝试这两个选项:

import pandas as pd 
import numpy as np 
ser.append(pd.Series([np.nan], index = [20])) 

# 11 1.0 
# 12 2.0 
# 13 3.0 
# 14 4.0 
# 15 5.0 
# 20 NaN 
# dtype: float64 

ser.set_value(20, np.nan) 

# 11 1.0 
# 12 2.0 
# 13 3.0 
# 14 4.0 
# 15 5.0 
# 20 NaN 
# dtype: float64 
+0

如果你的目标是扩大的系列,而不是指数本身,你应该有这个答案去。 – IanS