Я хотел бы переместить столбец в пандах DataFrame
, но мне не удалось найти способ сделать это из документации, не переписав весь DF. Кто-нибудь знает как это делать? DataFrame:
## x1 x2
##0 206 214
##1 226 234
##2 245 253
##3 265 272
##4 283 291
Желаемый результат:
## x1 x2
##0 206 nan
##1 226 214
##2 245 234
##3 265 253
##4 283 272
##5 nan 291
Ответы:
источник
df['x2'] = np.roll(df['x2'], 1)
Вам нужно использовать
df.shift
здесь.df.shift(i)
сдвигает весь фрейм данных наi
единицы вниз.Итак, для
i = 1
:Вход:
Вывод:
Итак, запустите этот сценарий, чтобы получить ожидаемый результат:
источник
Давайте определим фреймворк из вашего примера с помощью
Затем вы можете управлять индексом второго столбца с помощью
и, наконец, повторно объедините отдельные столбцы
Возможно, не быстро, но легко читается. Рассмотрите возможность установки переменных для имен столбцов и фактического требуемого сдвига.
Изменить: как правило, смещение возможно,
df[2].shift(1)
как уже было опубликовано, однако это отключит переход.источник
Если вы не хотите терять столбцы, которые вы перемещаете за конец фрейма данных, просто сначала добавьте требуемый номер:
источник
Я полагаю импорт
Сначала добавьте новую строку с помощью
NaN, NaN,...
в конце DataFrame (df
).Это создаст новый DF df2. Может быть, есть более элегантный способ, но это работает.
Теперь вы можете его сдвинуть:
источник
Пытаясь ответить на личную проблему, похожую на вашу, я нашел в Pandas Doc то, что, как мне кажется, могло бы ответить на этот вопрос:
Надеюсь помочь в будущем в вопросах в этом вопросе.
источник
Вот как я это делаю:
В основном я создаю пустой фрейм данных с желаемым индексом, а затем просто объединяю их вместе. Но я действительно хотел бы видеть это как стандартную функцию в пандах, поэтому я предложил улучшение для пандов.
источник