Сдвинуть все строки датафрейма на +1 к индексу. Чтобы верхняя строка осталась пустой
У меня есть датафрейм Есть ли возможность перенести все данные датафрейма на один индекс ниже(Без удаления данных), чтобы нулевой индекся стал пустым или заполненным(Nan) для дальнейшей работы с ним?
Изначальный датафрейм
Ниже пример того, как хотелось бы, чтобы это выглядело
Ответы (3 шт):
Получилось выкрутиться так. Создал пустой датафрейм с теми же колоннами, и нужной мне строкой и соединил с помощью df = pd.concat([df1, df2]).
У меня получилось как-то длинновато, наверное, можно короче:
import pandas as pd
df = pd.DataFrame({'Name': ['aaa','bbb','ccc'], 'Age': [10,15,20]})
df.index = df.index + 1
df.loc[0] = {}
df.sort_index(inplace=True)
df
Вывод:
Name Age
0 NaN NaN
1 aaa 10.0
2 bbb 15.0
3 ccc 20.0
Можно добавить и словарь со значениями-пробелами, но мне не очень понятно, у вас Age - строка или число? По-нормальному там должно быть число, а в столбец с числами вы пробел добавить не сможете. Ну и столбец с NaNпо старой традиции Pandas превратился в float тут. Всё это решаемо в определённых пределах, но суть действий, я надеюсь, понятна.
Основное тут то, что можно добавить строку в DataFrame через .loc[index], указав index, которого нет в DataFrame. Остальное тут - перенумерация и сортировка индекса.
Воспользуйтесь методом DataFrame.append():
res = (pd.DataFrame([[np.nan] * df.shape[1]], columns=df.columns)
.append(df, ignore_index=True))
результат:
In [24]: res
Out[24]:
Name Age
0 NaN NaN
1 aaa 10.0
2 bbb 15.0
3 ccc 20.0
