Python для цикла, распознающего только первую строку блока

1

Я новичок в Python. Я использую Python 3 для простого проекта машинного обучения в Anaconda Spyder IDE. Я попытался ввести имя файла CSV и добавить его в кадре данных pandas один за другим, используя цикл for:

for i in range (var):
    name = input ('CSV file name: ')
    data = pd.read_csv (name)
    stocks = pd.DataFrame ({name: data ['Column name']})

Проблема в том, что цикл for работает только для первой строки. Он вводит имена файлов один за другим "var" раз, затем читает только последний файл. Почему цикл for работает так? Что мне не хватает?

  • 2
    Добро пожаловать на ТАК! Вы перезаписываете переменные каждый раз через цикл. Кроме того, ставить пробелы перед скобками - это не хороший стиль Python (это не очень хороший стиль для любого языка, о котором я знаю, если подумать).
Теги:
pandas
for-loop
spyder
anaconda

1 ответ

0

Вы создаете новый фрейм данных на каждой итерации цикла. Вместо этого, подход Pandas, рекомендованный в документации, заключается в создании кадра данных из итерируемой серии:

d = {}
for i in range(var):
    name = input('CSV file name: ')
    data = pd.read_csv(name)
    d[name] = data['Column name']

stocks = pd.concat(d.values(), axis=1, keys=d)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню