Pegar string do dataframe

26 weergaven
Naar het eerste ongelezen bericht

rre...@gmail.com

ongelezen,
7 aug 2022, 08:06:2307-08-2022
aan Python Brasil
Bom dia,
Estou trabalhando com dataframes mensais, e o nome do dataframe é o nome do mês correspondente a ele (Por exemplo, o dataframe gerado em Janeiro, que só tem dados do mês de Janeiro, chama-se Janeiro , o dataframe gerado em Fevereiro, com dados do mês de Fevereiro, chama-se Fevereiro e assim para todos os 12 meses do anos).
Gostaria de saber se tem como eu pegar o nome de um dataframe e exibir o nome dele como se fosse uma string. A ideia eh a seguinte:

if (Janeiro):
    print("O dataframe pertence ao mês de ", Janeiro)
#Saida esperada: O dataframe pertence ao mês de Janeiro

elif (Fevereiro):
    print("O dataframe pertence ao mês de ", Fevereiro)
#Saida esperada: O dataframe pertence ao mês de Fevereiro

Obs: Não há qualquer informação dentro do dataframe que indique o mês dele.

Grato.

Jeferson Furtado

ongelezen,
7 aug 2022, 08:15:5607-08-2022
aan python...@googlegroups.com
Bom dia,

Você deve armazenar o dataframe em um dicionário.

Dayaframes = {'janeiro': df_janeiro, 'fevereiro':df_fevereiro}

Aí você usa as Keys para trazer os meses

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/6e0b9917-b50d-489c-971d-2f64089edc33n%40googlegroups.com.

rre...@gmail.com

ongelezen,
7 aug 2022, 09:16:2807-08-2022
aan Python Brasil
Obrigado, Jeferson, essa abordagem até serviria, porém ela traz como incoveniente o fato de eu ter sempre que atualizar o dicionário após um novo mês surgir. Por exemplo, estamos em Agosto, então, até aqui, isso funciona: 
meses = {'Janeiro': Janeiro, 'Fevereiro': Fevereiro, 'Marco': Marco, 'Abril': Abril, 'Maio': Maio, 'Junho': Junho, 'Julho': Julho, 'Agosto': Agosto}

Porém, quando chegar em setembro, eu tenho que voltar aqui e atualizar para 'Setembro': Setembro, pois eu não posso setar Setembro no dicionário, já que o df ainda não existe.

rre...@gmail.com

ongelezen,
7 aug 2022, 09:43:1007-08-2022
aan Python Brasil
Mas isso também não está funcionando. Veja:

meses = {'Janeiro': Janeiro, 'Fevereiro': Fevereiro, 'Marco': Marco, 'Abril': Abril, 'Maio': Maio, 'Junho': Junho, 'Julho': Julho, 'Agosto': Agosto}
No caso, eu deveria percorrer o dicionário e, com base no valor, eu deveria trazer a chave (que é uma string), certo? Seria algo assim?

for chave, valor in meses.items():
     if valor == Janeiro:
       print(chave)

O problema é que eu não posso comparar string com dataframe, igual ao problema original. Dá erro. 
E se eu tentar trazer o valor tento a chave, ele me retorna o conteudo do dataframe todo e não apenas o valor correspondente a ele.

Jeferson Furtado

ongelezen,
7 aug 2022, 11:22:1207-08-2022
aan python...@googlegroups.com
O dicionário é mutável, você pode adicionar ou deletar itens no dicionário, se não existe o mês, vice pode adicionar, você não precisa criar o dicionário com todos os meses, você pode adicionar quando for necessário

Lc

ongelezen,
7 aug 2022, 11:34:3607-08-2022
aan python...@googlegroups.com
se no cadastro estiver em ordem cronológica, pode usar a posição em um dicionário possa direcionar o nome do mês.

Rogerio

ongelezen,
7 aug 2022, 11:45:2707-08-2022
aan python...@googlegroups.com
Eu sei, porém, estava querendo que o processo fosse automatico. Ou seja, quando eu receber o arquivo do proximo mes, ele já detectar que se trata do mês de Setembro, sem eu ter que setar manualmente toda vez. 
Bem, acabei tendo uma ideia que funcionou: criei 4 dataframes ficticios para os meses que faltam.

Agosto = {'Chave'}
Agosto = pd.DataFrame(Agosto)
Setembro = {'Chave'}
Setembro = pd.DataFrame(Setembro)
Outubro = {'Chave'}
Outubro = pd.DataFrame(Outubro)
Novembro = {'Chave'}
Novembro = pd.DataFrame(Novembro)
Dezembro = {'Chave'}
Dezembro = pd.DataFrame(Dezembro)

Agora eu posso adicionar, sem erro, todos os meses do ano, mesmo os q ainda faltam
meses = {'Janeiro': Janeiro, 'Fevereiro': Fevereiro, 'Marco': Marco, 'Abril': Abril, 'Maio': Maio, 'Junho': Junho, 'Julho': Julho, 'Agosto': Agosto, 'Setembro': Setembro, 'Outubro': Outubro, 'Novembro': Novembro, 'Dezembro': Dezembro}

Quando chegar o arquivo do mes de Setembro, cujo dataframe já chega com o nome do mês, ou seja, Setembro, bastaria eu recuperar a chave correspondente ao df do dicionário,
isto é, 'Setembro': Setembro.
Mas o problema agora reside aqui. Como eu recupero essa chave com base no valor, se eu não consigo fazer 'Setembro' = Setembro, já que não posso comparar
string com dataframe?
Grato desde já.

Jeferson Furtado

ongelezen,
7 aug 2022, 12:19:1607-08-2022
aan python...@googlegroups.com
from datetime import datetime
import pandas as pd


mes = datetime.today().month
print(mes)




agosto = {
    'Nome': ['Tom', 'nick', 'krish', 'jack'],
    'Idade': [20, 21, 19, 18]
}

setembro = {
    'Nome': ['Tom', 'nick', 'krish', 'jack'],
    'Idade': [20, 21, 19, 18]
}


df_agosto = pd.DataFrame(agosto)

df_setembro = pd.DataFrame(setembro)


meses  = {8:df_agosto, 9:df_setembro}

print(meses[mes])



--
Jeferson Furtado da Silva

11 994027991

Beto Alves

ongelezen,
7 aug 2022, 17:26:5007-08-2022
aan python...@googlegroups.com
Pelo que entendi, estais preenchendo o dataframe via arquivo gerado, correto? Se for isso mesmo é só fazer a extração do nome dele.

import os
arq = open(os.getcwd() + '/teste.pdf') # Arquivo de exemplo localizado na mesma pasta do script.py
print("O dataframe pertence ao mês de", os.path.basename(arq.name).split('.')[0])

rre...@gmail.com

ongelezen,
8 aug 2022, 08:00:4308-08-2022
aan Python Brasil
Perfeito. Era isso mesmo. Obrigado, Betog.
Allen beantwoorden
Auteur beantwoorden
Doorsturen
0 nieuwe berichten