Для каждого l oop как экспортировать данные в новую строку в файле CSV? - PullRequest
1 голос
/ 10 апреля 2020

Я собираю данные с нескольких URL, и полученные данные были разбиты на слова. С помощью для l oop я пытаюсь добавить данные в пустой список и создать фрейм данных, а затем экспортировать в CSV-файл. Проблема в том, что при экспорте в CSV он перезаписывается предыдущий столбец, и я вижу только один столбец. Как экспортировать данные в каждую строку из каждой итерации.

import urllib.request
from inscriptis import get_text
import pandas as pd
from googletrans import Translator
from time import sleep

url_list = pd.read_csv("/home/user/Downloads/warrior_categories.alcohol.csv")
urls = url_list['domain']


def dataextraction():
    df = pd.DataFrame()
    for url in urls:
        final_url = 'http://' + url
        try:
            html = urllib.request.urlopen(final_url).read().decode('utf-8')
            text = get_text(html)
            extracted_data = text.split()
            refined_data = []
            SYMBOLS = '{}()[].,:;+-*/&|<>=~0123456789'
            for i in extracted_data:
                if i not in SYMBOLS:
                    refined_data.append(i)
            print("\n", "$" * 50, "HEYAAA we got arround: ", len(refined_data), " of keywords! Here are they: ",
                  "$" * 50, "\n")
            print(type(refined_data))
            empty=[]
            for data in refined_data:
                empty.append(data)
            df.append(empty)
        except:
            pass

    df.to_csv('alcohol.csv', index=False)

print(dataextraction())

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Если вам нужно просто добавить записи из l oop

# need to describe the columns. Just empty df with columns
df = pd.DataFrame([], columns=['name'])
# let's imaging here is your loop with one record
for i in range(5):
    # you conditions here... if blablabla.... and append if you need
    df = df.append({'name': str(i) + 'name'}, ignore_index=True)
print(df)

Если вам нужно добавить df из l oop:

df = pd.DataFrame([], columns=['name'])
for i in range(5):
    # here is a new df
    tmp_df = pd.DataFrame.from_dict({'name': ('{i}_{k}_name'.format(i=i, k=k) for k in range(i))})
    # you conditions here... if blablabla.... and concat if you need
    df = pd.concat([df, tmp_df], ignore_index=True)
print(df)

Надеюсь, это помогает

1 голос
/ 10 апреля 2020

ваш вопрос требует более подробного объяснения, но я понимаю, что вы хотите показать все столбцы, встроенные для l oop в csv, это можно сделать примерно так

import pandas as pd


def dataextraction():
    df = pd.DataFrame()
    for url in urls:
        final_url = 'http://' + url
        try:
            html = urllib.request.urlopen(final_url).read().decode('utf-8')
            text = get_text(html)
            extracted_data = text.split()
            refined_data = []
            SYMBOLS = '{}()[].,:;+-*/&|<>=~0123456789'
            for i in extracted_data:
                if i not in SYMBOLS:
                    refined_data.append(i)
            print("\n", "$" * 50, "HEYAAA we got arround: ", len(refined_data), " of keywords! Here are they: ",
                  "$" * 50, "\n")
            print(type(refined_data))
            empty=[]
            for data in refined_data:
                empty.append(data)
            df.append(empty)
        except:
            pass

    df.to_csv('alcohol.csv', index=False)
...