Как добавить строку в начало кадра данных панд? - PullRequest
3 голосов
/ 19 марта 2019

Я читаю свои данные следующим образом:

dataset = pd.read_csv(r' ...\x.csv')

Затем укажите, выберите некоторые из них, как это:

dataset = dataset.loc[len(dataset)-data_length:  , :]

Есть ли переключение:

dataset_shifted = dataset.shift(1)
dataset_shifted = dataset_shifted.dropna()

И хотелось бы добавить новую строку, равную 1, к вершине моего dataset. Но использование следующей команды не работает, потому что мои индексы данных находятся в диапазоне от 3714 до 3722, и это добавляет индекс 0 к концу кадра данных, а не к его началу!

dataset_shifted = dataset_shifted .loc[0 , :] = 1

1 Ответ

3 голосов
/ 19 марта 2019

Если в DataFrame отсутствуют пропущенные значения, вы можете упростить решение, удалив dropna и используя DataFrame.fillna:

dataset = pd.DataFrame({
         'B':[4,5,4],
         'C':[7,8,9],
         'D':[1,3,5],

}, index=[3714, 3715, 3716])

print (dataset)
      B  C  D
3714  4  7  1
3715  5  8  3
3716  4  9  5

dataset_shifted = dataset.shift(1).fillna(1)
print (dataset_shifted)
        B    C    D
3714  1.0  1.0  1.0
3715  4.0  7.0  1.0
3716  5.0  8.0  3.0

Если пропущенные значения возможны, задайте только первую строкупо позиции на DataFrame.iloc:

dataset_shifted = dataset.shift(1)
dataset_shifted.iloc[0 , :] = 1

Ваше решение должно быть изменено:

dataset_shifted = dataset.shift(1)
dataset_shifted = dataset_shifted.dropna()
dataset_shifted.loc[0 , :] = 1
dataset_shifted = dataset_shifted.sort_index()

print (dataset_shifted)
        B    C    D
0     1.0  1.0  1.0
3715  4.0  7.0  1.0
3716  5.0  8.0  3.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...