Problema de SO (Linux/Windows)
marcelo-ventura opened this issue · 7 comments
Prezado, muito obrigado pela excelente contribuição com seu pacote para a comunidade.
Estou usando o módulo para obter a taxa Selic.
Para windows funciona perfeitamente, porém em linux o seguinte comando me retorna um dataframe com nomes de colunas diferentes:
sgs = SGS()
selic = sgs.get_valores_series(series.SELIC_META, "04/01/2010", dt.date.today().strftime("%d/%m/%Y"))
Em linux tenho as seguintes colunas: 432
432
2010-01-04 8,75
2010-01-05 8,75
2010-01-06 8,75
2010-01-07 8,75
2010-01-08 8,75
Em windows ele me retorna como colunas (data, valor)
Obrigado pela atenção.
Qual a versão do sgs que você tem instalada?
A versão é a 1.27.4
Mano, descobri aqui que a versão 1.30.2 é a que apresenta o problema.
A 1.27.4 funcionou perfeitamente no linux.
Olá Marcelo,
O problema está resolvido na última versão do pacote (2.0). Peço que atualize a sua instalação:
$ pip install sgs -U
import sgs
import datetime as dt
sgs.time_serie(432, "04/01/2010", dt.date.today().strftime("%d/%m/%Y"))
@rafpyprog , a versão foi atualizada. No linux mint agora a tabela vem sem o nome das colunas, e retorna um pandas series.
Eu consegui contornar isso da seguinte forma:
selic = sgs.time_serie(432, "04/01/2010", dt.date.today().strftime("%d/%m/%Y"))
selic = pd.DataFrame({"DATA":selic.index, "VALOR": selic})
Caso eu use o pd.DataFrame no objeto selic sem especificar as colunas, ele diz que o nome da coluna é 432.
Vou fechar essa issue pois consegui resolver meu problema.
Mas talvez seja melhor que a consulta retorne um dataframe ao invés de um pandas series. Apenas uma sugestão.
Muito obrigado pela atenção.
@marcelo-ventura, você consegue obter um dataframe da seguinte forma:
>>> import sgs
>>> import datetime as dt
>>> df = sgs.dataframe(432, "04/01/2010", dt.date.today().strftime("%d/%m/%Y"))
>>> type(df)
<class 'pandas.core.frame.DataFrame'>
Caso deseje gerar um dataframe com múltiplas séries basta passar uma lista com os códigos:
>>> import sgs
>>> import datetime as dt
>>> df = sgs.dataframe([432, 1], "04/01/2010", dt.date.today().strftime("%d/%m/%Y"))
>>> df.head()
432 1
2010-01-04 8.75 1.7240
2010-01-05 8.75 1.7227
2010-01-06 8.75 1.7337
2010-01-07 8.75 1.7413
2010-01-08 8.75 1.7390
Após a versão 2.0 o nome das colunas retornado será o código da série.
Excelente @rafpyprog ! Muito obrigado pelo esclarecimento. Irei fazer dessa forma sugerida.