Подтвердить что ты не робот

Создать пустой Dataframe с такими же измерениями, как и другой?

Я немного искал, но не могу найти хороший ответ. Я хочу создать пустой фреймворк с такими же размерами, как и другой фреймворк данных, чтобы добавить новые столбцы. Сегодня я создаю пустой фрейм данных, заполненный нулями, а затем удаляю нулевой столбец. Я надеюсь, что есть лучший способ, но не могу найти ответ. Кто-нибудь может мне помочь?

Мне нравится это сегодня, и он работает, но он очень уродлив.

df_copy = pandas.DataFrame(numpy.zeros(len(df_original.index))) 
df_copy = df_copy.drop([0],axis=1) 

И теперь я могу добавлять новые столбцы при обработке данных. Поэтому в основном я хочу, чтобы пустой фреймворк с такими же размерами, что и другой фрейм.

df_copy["price"] = pricesList
df_copy["size"] = sizesList

EDIT: Еще один близкий вопрос: как создать пустой Dataframe с размерами mxn? Я получил ответ ниже, как создать пустой фреймворк с размерами 1xn, который устанавливается путем установки индекса. Но как создать пустой фрейм данных nxm, заполненный нулями? Причина, по которой я спрашиваю, заключается в том, что я подозреваю (?), Что быстрее создать нулевой заполненный фрейм данных, а затем заменить каждый элемент по мере необходимости. Альтернативой является создание пустой фреймворка с размерами 1xn, а затем добавление столбцов по мере необходимости, что, как мне сказали, медленное. Таким образом, может быть быстрее создать пустой фреймворк с размерами nxm, а затем заменить элементы по мере необходимости (путем копирования списка в каждый столбец). Скажем, столбец имеет 100 строк, и я создаю подсписку с 25 строками, поэтому я просто копирую этот список в нужную подколонку и повторяю. Это быстрее, чем добавление нового столбца?

4b9b3361

Ответ 1

Создание пустой фреймворка с тем же индексом и столбцами, что и другой фрейм:

import pandas as pd
df_copy = pd.DataFrame().reindex_like(df_original)

Ответ 2

import pandas as pd 
df_copy = pd.DataFrame(index=df_original.index,columns=df_original.columns)

Ответ 3

Ответ @GaspareBonventre может быть медленным из-за проблемы с конструктором Pandas DataFrame. Я нахожу это намного быстрее, чтобы сделать

import numpy as np
df_copy = pd.DataFrame(np.zeros(df_original.shape))
df_copy.index = df_original.index
df_copy.columns = df_original.columns

Ответ 4

Для тех, кто заходит на эту страницу и хочет создать кадр данных с такими же столбцами, одинаковыми dtypes и без строк:

import pandas as pd
df_copy = df_original.iloc[0:0,:].copy()