Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Adicionar nova linha ao arquivo.csv

cadastro.py

from PySimpleGUI import PySimpleGUI as sg
import main
import pandas as pd

# Layout
sg.theme('Reddit')
layout = [
    [sg.Text('Ticker: '), sg.Input(key='Ticker')],
    [sg.Text('Quantidade de Papéis: '), sg.Input(key='Qtd_de_papeis')],
    [sg.Text('Valor: '), sg.Input(key='Valor_pago')],
    [sg.Text('Data:'), sg.Input(key='Data')],
    [sg.Button('Adicionar')]
]
# Janela
window = sg.Window('Tela de Cadastro', layout)
# Ler os eventos


while True:
    events, values = window.read()
    if events == sg.WINDOW_CLOSED:
        break
    if events == 'Adicionar':
        main.rows = values
        df = pd.DataFrame(data=main.rows, index=[0], columns=main.columns)
        print(df)
        df.to_csv('dados/registro.csv', sep=';', mode = 'a')

main.py

import pandas as pd


"""
Criar a base de dados para armazenar as movimentações
"""
# Ticker, Qtd. de papéis, Valor pago, data; ok
# Valor aplicado(Qtd. de papéis * Valor pago);
# Preço Médio(Total aplicado/Qtd. papéis);
# Total aplicado(Somatório dos valores aplicados);
# Total papéis(Somatório das Qtd. de papéis);
# Proventos.

# Criando as colunas do DF
columns = ['Ticker', 'Qtd_de_papeis', 'Valor_pago', 'Data']
# Criando as linhas do DF
rows = {}
# Método para adicionar itens ao DF

# Criando o DF
df = pd.DataFrame(data=rows, index=[0], columns=columns)


"""
Criar função aporte
"""
# Ticker
# Qtd. de papéis
# Valor Pago
# Data
# Adicionar evento à base de movimentações


"""
Criar função Resgate
"""
# Ticker
# Qtd. de papéis
# Valor de Venda
# Data
# Adicionar evento à base de movimentações


"""
Calcular as variáveis a serem apresentadas
"""
# Preço Médio(Total aplicado/Qtd. papéis)
# Total aplicado(Somatório dos valores aplicados) ou(Valor Médio * Qtd. papéis)
# Total papéis(Somatório das Qtd. de papéis)
# Saldo Bruto(Total aplicado - (Total de papéis * Última cotação)
# Rentabilidade da aplicação(((Saldo Bruto / Total aplicado)*1oo)-100)
# Peso na Carteira((Saldo Bruto / Saldo Bruto da carteira)*100)
# Saldo Bruto da carteira(Somatório do Saldo Bruto)
# Rentabilidade Total da carteira(Saldo Bruto da carteira / Valor aplicado da carteira)*100
# Valor aplicado da carteira(Somatório do total aplicado)


"""
Situação atual da carteira
"""
# Saldo Bruto da carteira(Somatório do Saldo Bruto)
# Rentabilidade Total da carteira(Saldo Bruto da carteira / Valor aplicado da carteira)*100
# Valor aplicado da carteira(Somatório do total aplicado)

Como o código do cadastro.py consigo adicionar a linha ao arquivo .csv já existente. Porém toda vez que rodo o codigo, uma nova "tabela" é adicionada ao final do csv. Com o intuito de adicionar somente os valores do dicionário, ou seja, adicionar somente a linha com os values do dicionário, sem o nome das colunas, alterei meu código(abaixo) para obter listas com as chaves e os valores separados, para assim adicionar ao final da linha somente a lista com os valores, sem as chaves. O meu problema é que os valores adicionados ficam um em cada linha, mas quero deixá-los todos em uma única linha, como faço isso?

from PySimpleGUI import PySimpleGUI as sg
import pandas as pd

# Layout
sg.theme('Reddit')
layout = [
    [sg.Text('Ticker: '), sg.Input(key='Ticker')],
    [sg.Text('Quantidade de Papéis: '), sg.Input(key='Qtd_de_papeis')],
    [sg.Text('Valor: '), sg.Input(key='Valor_pago')],
    [sg.Text('Data:'), sg.Input(key='Data')],
    [sg.Button('Adicionar')]
]
# Janela
window = sg.Window('Tela de Cadastro', layout)
# Ler os eventos


while True:
    events, values = window.read()
    if events == sg.WINDOW_CLOSED:
        break
    if events == 'Adicionar':
        columns = list(values.keys())
        rows = list(values.values())
        print(rows)
        print(columns)
        df = pd.DataFrame(data=rows)
        df.to_csv('dados/registro.csv', sep=';', mode='a', index=False)
df_new = pd.read_csv('dados/registro.csv', sep=';')
print(df_new)
1 resposta
solução!

Bom dia Mauricio, tudo bem? Espero que sim!

Para adicionar somente os valores ao csv sem o nome das colunas, basta usar o parâmetro header = False, dessa forma ele vai dar o append no seu arquivo, mas sem adicionar os nomes das colunas.

df.to_csv('dados/registro.csv', sep=';', mode = 'a', header = False)

Estou à disposição. Bons estudos!