2016-08-30 4 views
1

У меня есть объект индекса pandas, и я хотел бы добавить его к концу. Метод .append(), похоже, не работает, как и следовало ожидать, и поскольку я пытаюсь добавить элемент, я не могу вставить его в позицию -1, потому что это ставит значение во втором порядке, Последняя позиция. Например,Добавить значение в конец объекта индекса pandas

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

Смежные вопросы