Stephany Posted February 27, 2022 Share Posted February 27, 2022 Olá, pessoal. Estou tentando fazer um código em Python usando a biblioteca Pandas que consiga adicionar um separador a números das colunas de minha planilha que estão aglutinados, por exemplo, os dados estão organizados da seguinte forma: 999, 888, 777, 555, 666 ... Gostaria que eles pudessem ficar separados por algum separador como ",' (Vírgula) ou "/" (Barra) e ficassem dessa forma 5/5/5, 8/8/8 ou 6,6,6. Tentei usar o comando split mas não obtive êxito, pois pelo que li ele só separa dados que já contém separadores, nem que o separador seja um espaço em branco, e meus números não tem nem o espaço em branco para separá-los. Se alguém puder me ajudar nessa agradeço. Link to comment Share on other sites More sharing options...
geovaniif Posted February 28, 2022 Share Posted February 28, 2022 vc já tentou tratar ele como string, e então iterar sobre ele colando o separador? algo assim '/'.join('666'[i] for i in range(0, len('666'))) 1 Link to comment Share on other sites More sharing options...
Marcio Henrique Hirata Posted February 28, 2022 Share Posted February 28, 2022 Bom dia Stephany. Existem várias alternativas para o tratamento de strings, você precisa identificar nos seus dados um padrão, que possa ser utilizado... como você mencionou, o split necessita de um separador. Uma outra alternativa seria buscar pelo número de caracteres (de um em um ou de dois em dois...), aí poderia usar "string[0:n]" (onde 0 é a posição inicial e n é o número de caracteres que deseja buscar). Tudo depende do padrão que vc identificar. Espero ter ajudado!!! 😃 1 1 Link to comment Share on other sites More sharing options...
Stephany Posted March 1, 2022 Author Share Posted March 1, 2022 Em 28/02/2022 at 09:05, geovaniif disse: vc já tentou tratar ele como string, e então iterar sobre ele colando o separador? algo assim '/'.join('666'[i] for i in range(0, len('666'))) Olá, Geovani, bom dia! Ainda não tentei essa opção, vou testar e volto aqui para dizer se deu certo. 1 Link to comment Share on other sites More sharing options...
Stephany Posted March 1, 2022 Author Share Posted March 1, 2022 Em 28/02/2022 at 09:07, Marcio Henrique Hirata disse: Bom dia Stephany. Existem várias alternativas para o tratamento de strings, você precisa identificar nos seus dados um padrão, que possa ser utilizado... como você mencionou, o split necessita de um separador. Uma outra alternativa seria buscar pelo número de caracteres (de um em um ou de dois em dois...), aí poderia usar "string[0:n]" (onde 0 é a posição inicial e n é o número de caracteres que deseja buscar). Tudo depende do padrão que vc identificar. Espero ter ajudado!!! 😃 Oi, Marcio, bom dia! Você ajudou sim, vou testar a sua dica e a do Geovani que foi postada anteriormente e se der certo postarei o código aqui para mostrar como ficou. Grata! 1 Link to comment Share on other sites More sharing options...
Stephany Posted March 1, 2022 Author Share Posted March 1, 2022 (edited) Pessoal, a dúvida continua. Meu código segue abaixo: #Primeiro importei a lib Pandas: import pandas as pd #Subi a planilha para minha IDE: plan = pd.read_excel('pro.xlsx') #Depois dei um head para ver se o upload da planilha tinha sido feito corretamente: plan.head(8) #Usei a função .info para obter informações dos dados da minha planilha e todos estão no tipo Object: plan.info() #E após essa seq de passos eu defini a variável "ano" para ler duas colunas de minha planilha e também dei um head e um dtype para saber se estava tudo ok: ano = plan[['um', 'dois']] ano.head() ano.dtypes # E a parte mais importante e que está dando errado ;'( - Gostaria que a estrutura do laço lesse minha variável ano e imprimisse as colunas de minha tabela com seus números 999 - 777, como 9/9/9 ou 7/7/7: ano = plan[['um', 'dois']] for ano in range(1, 500, len('999')): print(('/').join(ano)) P.S: Relevem se tiver erro grandes de código, sou iniciante e não sei onde estou errando, se puderem ajudar agradeço. 🙂 O erro que está dando é esse: TypeError: 'int' object is not subscriptable. Edited March 1, 2022 by Stephany Link to comment Share on other sites More sharing options...
geovaniif Posted March 2, 2022 Share Posted March 2, 2022 o código que vc descreveu não condiz com o que orientei, acho que houve um confusão ali. primeiramente, essa variavel "ano" me parece um dataframe de 2 colunas, e for o caso, você está sobrescrevendo ela sendo um contador do range. quando vc for iterar sobre um dataframe, é preciso usar o iterrows ex: for indice, linha in ano.iterrows(): eu recomendo algo assim: ano = plan[['um', 'dois']] ano.apply(lambda x: ['/'.join(row) for row in x]) ) mas pode fazer com for normal também. Faz o teste ai e me avisa no que deu 🤞 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now