#python #pandas #dataframe
#python #pandas #dataframe
Вопрос:
Я хотел бы создать фрейм данных с несколькими столбцами разной длины, так как я думаю, что это невозможно с помощью pd.dataframe Сначала я создаю фрейм данных только с нулями, а теперь я хотел бы заменить каждый столбец на массив, который я сохранил ранее (с разной длиной). Я пробовал dataframe.replace и dataframe.update, но я не смог получить эти результаты.
Ответ №1:
Вы должны вставить массив из индекса 1
. Для этого вы можете сделать,
df['dobs'][1:] = dobs
Аналогично для всех массивов.
Рассмотрим пример фрейма данных,
df = pd.DataFrame()
df['dobs'] = [0.] * 45
df['dpred_0'] = [0.] * 45
df['dpred'] = [0.] * 45
df['mrec'] = [0.] * 45
Теперь, некоторые массивы заполнителей формы, которые вы упомянули в вопросе,
dobs = np.array([x for x in range(1, 45)])
dpred_0 = np.array([x for x in range(1, 45)])
dpred = np.array([x for x in range(1, 45)])
mrec = np.array([x for x in range(1, 46)])
Давайте проверим формы,
print(dobs.shape, dpred_0.shape, dpred.shape, mrec.shape, df.shape) # ((44,), (44,), (44,), (45,), (45, 4))
Чтобы заменить столбцы из индекса 1
на более короткие массивы, вы можете сделать это следующим образом,
df['dobs'][1:] = dobs
df['dpred_0'][1:] = dpred_0
df['dpred'][1:] = dpred
df['mrec'] = mrec # mrec is of shape (45, ) so no need to start from index 1
dobs dpred_0 dpred mrec
0 0.0 0.0 0.0 1
1 1.0 1.0 1.0 2
2 2.0 2.0 2.0 3
3 3.0 3.0 3.0 4
4 4.0 4.0 4.0 5
Ответ №2:
Вы можете добавить массив в dataframe, создав новый столбец и определив длину и положение:
random_array = range(0,12)
df['new_column'][0:12] = random_array