Применение цикла for в каждой строке столбца указанного файла - PullRequest
0 голосов
/ 16 ноября 2018

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

То, что я пытался сделать, это установить подмножество данных, чтобы получить базу данных только с нужным мне столбцом («blargh» в сценарии ниже), а затем попытаться перетянуть базу данных через цикл for.Тем не менее, я не уверен, как перебирать каждую строку.Может ли кто-нибудь помочь мне, понимая, как сделать цикл for ниже функции?

import pandas as pd
import os.path

# Get the path to the demos directory.
base_path = os.path.dirname(__file__)

text_file = pd.read_csv(os.path.join(base_path, "names.txt"), sep = ';    ' , engine='python')

# subsetting
blargh = text_file[["Name"]]
print(blargh)

# attempting to make a for loop
for row in blargh:
    print(row)

Редактировать: По запросу, вот фон, почему я пытаюсь это сделать. Это попытка исправить проблему, которую я исследовал в предыдущем посте, но я не добился значительного прогресса.Нажмите здесь, чтобы увидеть исходную проблему

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

with open(os.path.join(base_path, "names.txt")) as names:
    sheet.add_labels(name.strip() for name in names)

, где sheet = labels.Sheet(specs, write_name, border=True).Когда я попытался изменить это на:

with text_file[["Name"]] as names:
    sheet.add_labels(name.strip() for name in names)

, я получил AttributeError: __exit__.Кто-то предложил использовать оператор try / finally, но я не могу заставить его работать.

(полная ошибка:

Traceback (most recent call last):
  File "sticker.V.7.py", line 173, in <module>
    with text_file[["Name"]] as names:
AttributeError: __exit__

)

1 Ответ

0 голосов
/ 16 ноября 2018

Вам необходимо сохранить созданный файл данных (т.е. text_file [["Name"]]) в файл.Итак:

data = text_file[["Name"]]
data.to_csv("data.csv", sep=",")

Оператор with работает только со специальными объектами, для которых определены функции enter и exit .DataFrame - это не тот объект, но у результата open ("file.csv", "r") есть эта возможность.

Итак, теперь вы можете:

with open(os.path.join(base_path, "data.csv")) as names:
    sheet.add_labels(name.strip() for name in names)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...