#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)
Комментариев нет:
Отправить комментарий