我有一个pandas索引对象,我想在它的末尾添加一个值。 .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)
有什么我想念的吗?这是关于pandas 0.18.1。感谢。
答案 0 :(得分:4)
方法append
将另一个索引作为输入,但如果您只是传递一个类似数组的对象,则union
将起作用:
indx.union([20])
请注意,pandas中的索引对象是不可变的,因此任何此类操作都将返回一个新索引而不是修改现有索引。
答案 1 :(得分:3)
您需要将一组索引值作为参数传递,同时附加到给定的index
对象。
indx.append(pd.Index([20])) # Pass the values inside the list
Int64Index([11, 12, 13, 14, 15, 20], dtype='int64')
答案 2 :(得分: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