TransWikia.com

Como eu retiro caracteres alfabéticos de uma coluna de uma pd.Series? (Python)

Stack Overflow em Português Asked by Matheus Bento de Souza on November 30, 2021

Minha dúvida é bem simples. Dado uma pd.Series como descrita abaixo, como eu removo caracteres "ANOS" e "MESES" dela? Eu olhei a documentação do Pandas mas infelizmente não consegui descobrir um meio.

Eu fiz a seguinte variável para retornar a pd.Series:

In:

idade_serie = dataframe['Idade'].value_counts()

Out:

80 ANOS     91
70 ANOS     85
73 ANOS     82
75 ANOS     81
76 ANOS     79
            ..
103 ANOS     1
17 ANOS      1
4 MESES      1
26 ANOS      1
19 AN0S      1
Name: Idade, Length: 109, dtype: int64

2 Answers

Você pode fazer isso usando a função .split() por espaço e selecionando a primeira posição do array, após isso usar a função value_counts().

data = {'Idade': ['80 ANOS', '80 ANOS', '80 ANOS', '80 ANOS', '80 ANOS',
                  '80 ANOS', '80 ANOS', '70 ANOS', '70 ANOS', '70 ANOS',
                  '73 ANOS ', '73 ANOS ', '73 ANOS ', '73 ANOS ']}

df = pd.DataFrame(data)
df['Idade'].str.strip().str.split(' ').str[0].value_counts()
#saida:
80    7
73    4
70    3

A função split quebra a coluna Idade pelo espaço, transformando os dados em arrays:

df['Idade'].str.strip().str.split(' ')
#saida
0     [80, ANOS]
1     [80, ANOS]
2     [80, ANOS]
3     [80, ANOS]
4     [80, ANOS]
5     [80, ANOS]
6     [80, ANOS]
7     [70, ANOS]
8     [70, ANOS]
9     [70, ANOS]
10    [73, ANOS]
11    [73, ANOS]
12    [73, ANOS]
13    [73, ANOS]

e o ultimo .str[0] serve para selecionar a primeira posição de cada array:

df['Idade'].str.strip().str.split(' ').str[0]
#saida
0     80
1     80
2     80
3     80
4     80
5     80
6     80
7     70
8     70
9     70
10    73
11    73
12    73
13    73

Answered by Terry on November 30, 2021

tudo bom? Uma maneira é usar o método replace, porem para funcionar deve-se converter seu Dataframe para string.

Fiz um teste usando o seu caso, e ficou mais ou menos assim:

import pandas as pd

data = {'Idade': ['80 ANOS', '80 ANOS', '80 ANOS', '80 ANOS', '80 ANOS',
                  '80 ANOS', '80 ANOS', '70 ANOS', '70 ANOS', '70 ANOS',
                  '73 ANOS ', '73 ANOS ', '73 ANOS ', '73 ANOS ']}

df = pd.DataFrame(data)
idade_serie = df['Idade'].value_counts()

print(df)
print('-'*40)
print(str(idade_serie).replace("ANOS", ""))

Caso tenha outra forma, compartilha com a gente. abraço!

Answered by Lbeaver on November 30, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP