在pandas索引对象

时间:2016-08-30 14:55:36

标签: python pandas

我有一个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。感谢。

3 个答案:

答案 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