У меня есть много разных файлов, которые я пытаюсь загрузить в pandas питоническим способом, а также добавить в разные ячейки, чтобы это выглядело легко. Теперь у меня есть 36 различных переменных, но для простоты я покажу вам пример с тремя разными фреймами данных.
Но скажем, я загружаю CSV-файлы с этим в фреймы данных, но в разные ячейки, автоматически генерируемые.
file_list = ['df1.csv', 'df2.csv', 'df3.csv']
name_list = ['df1', 'df2', 'df3']
Я мог бы легко создать три разные ячейки и ввести:
df1 = pd.read_csv('df1.csv')
Но есть десятки разных CSV, и я хочу делать похожие вещи, такие как удаление столбцов, и должны быть более простые способы.
Я сделал что-то вроде:
var_list = []
for file, name in zip(file_list, name_list):
var_name = name
var_file = pd.read_csv(file)
var_list.append((file, name, var_file))
print(var_list)
Но все это происходит в одной клетке.
Теперь я просмотрел документы ipython, так как я считаю, что это пакет, который имеет к этому отношение, но я ничего не нашел. Я ценю вашу помощь.
Что значит добавить новые ячейки?
Не очень понятно, почему вы хотите программно добавлять новые ячейки в блокнот. Почему бы не прочитать все ваши кадры данных одновременно? Какая польза от загрузки каждого из них в отдельную ячейку? Это потому, что вы хотите отображать кадры данных? Потому что для этого вы можете просто распечатать их...
Также ваши кадры данных выглядят неправильно... вы неправильно загружаете данные в конструкторы. Вы должны делать pd.DataFrame({"name": name_list, "age": age_list, "height": height_list})
. Прямо сейчас, например, столбец вашего имени в DF3 имеет вид Sarah, 53, 56
, что явно неверно....
Кроме того, если все ваши фреймы данных имеют одинаковую структуру, почему бы не загрузить их все в один фрейм данных?
Насколько я понимаю, вам нужно загрузить содержимое нескольких файлов .csv в несколько фреймов данных pandas, плюс вы хотите выполнить повторяемый процесс для каждого из них. Вы не уверены, что они будут загружены правильно, но вы все равно хотите получить от них максимум, и с этой целью вы хотите запускать каждый процесс в своей собственной ячейке Jupyter.
Как указал ddejohn, я не знаю, лучший ли это вариант, но в любом случае, я думаю, что это классный вопрос. Следующий код генерирует несколько ячеек, каждая из которых имеет общую структуру с разными переменными (в моем примере я просто сортирую загруженный фрейм данных по возрасту, например). Он основан на странице Как программно создать несколько новых ячеек в блокноте Jupyter, которая должна получить признание, если это действительно то, что вы искали:
from IPython.core.getipython import get_ipython
import pandas as pd
def create_new_cell(contents):
shell = get_ipython()
payload = dict(
source='set_next_input',
text=contents,
replace=False,
)
shell.payload_manager.write_payload(payload, single=False)
def get_df(file_name, df_name):
content = "{df} = pd.read_csv('{file}', names=['Name', 'Age', 'Height'])\n"\
"{df}.sort_values(by='Age', inplace=True)\n"\
"{df}"\
.format(df=df_name, file=file_name)
create_new_cell(content)
file_list = ['filename_1.csv', 'filename_2.csv']
name_list = ['df1', 'df2']
for file, name in zip(file_list, name_list):
get_df(file, name)
Может быть, проверить stackoverflow.com/questions/54987129/…