Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

Создание столбца по индексу. Pandas, python

#python #pandas #dataframe


У меня есть DataFrame, в нем есть два столбца. Я хочу создать третий столбец, но
чтобы он был на первом месте. 
На данный момент я делаю вот так:
Сначала создаю столбец

df1['Numbers' ] = getNum


Он создается последний, потом я его удаляю и вставляю на первое место

num = df1['Numbers']
df1.drop(labels=['Numbers'], axis=1, inplace=True)
df1.insert(0, "Numbers", num)


Можно как то сразу при создании поместить его по нужному индексу?
PS Только начал изучать pandas, много чего не знаю. Заранее спасибо.
    


Ответы

Ответ 1



@Эникейщик показал наиболее идиоматичный и короткий способ. Иногда возникает необходимость отсортировать/упорядочить столбцы "на лету", чтобы использовать это дальше в "chained expressions". В этом случае можно воспользоваться методом .reindex(..., axis='columns'), т.к. метод .insert() делает изменения "на месте" ("in place") и всегда возвращает None. Т.е. после него не получится вызвать следующий метод через точку. Пример: дан след. DataFrame: In [215]: df Out[215]: a b c 0 1 2 3 1 4 5 6 необходимо добавить новый столбец в качестве первого столбца и посчитать сумму всех столбцов. In [216]: df.assign(x=[10,11]).reindex(['x'] + df.columns.tolist(), axis='columns').sum() Out[216]: x 21 a 5 b 7 c 9 dtype: int64 пошагово: In [217]: df.assign(x=[10,11]) Out[217]: a b c x 0 1 2 3 10 1 4 5 6 11 In [218]: df.assign(x=[10,11]).reindex(['x'] + df.columns.tolist(), axis='columns') Out[218]: x a b c 0 10 1 2 3 1 11 4 5 6 In [219]: df.assign(x=[10,11]).reindex(['x'] + df.columns.tolist(), axis='columns').sum() Out[219]: x 21 a 5 b 7 c 9 dtype: int64

Ответ 2



Если getNum это значения столбца, то просто df1.insert(0, "Numbers", getNum)

Комментариев нет:

Отправить комментарий