Como extrair números de string usando um padrão?

melo777:

Eu tenho as seguintes linhas dez em uma trama de dados de pandas. Eu quero extrair as coordenadas como em [49,49], [31,78] etc. (para cada linha).

Eu tentei usar extrato de cordas, mas eu não conseguia descobrir o padrão.

Isto é o que eu tentei. Eu não estou certo que eu entender como isso funciona, porém:

b é a trama de dados e as posições é a coluna

b.positions.str.extract("""[{'y': (\d+), 'x': (\d+)}],""")

[{'y': 49, 'x': 49}, {'y': 78, 'x': 31}]
[{'y': 78, 'x': 31}, {'y': 75, 'x': 51}]
[{'y': 75, 'x': 51}, {'y': 71, 'x': 35}]
[{'y': 71, 'x': 35}, {'y': 95, 'x': 41}]
[{'y': 95, 'x': 41}, {'y': 88, 'x': 72}]
[{'y': 88, 'x': 72}, {'y': 75, 'x': 77}]
[{'y': 25, 'x': 23}, {'y': 15, 'x': 39}]
[{'y': 15, 'x': 39}, {'y': 20, 'x': 33}]
[{'y': 85, 'x': 61}, {'y': 80, 'x': 67}]
[{'y': 80, 'x': 67}, {'y': 61, 'x': 59}]
[{'y': 61, 'x': 59}, {'y': 45, 'x': 45}]


Valdi_Bo:

Tente str.extractall e grupos de captura nomeados. Assumindo que a coluna de origem segurando as cordas é nomeado col1 , o código é:

df.col1.str.extractall(r"'y': (?P<y>\d+), 'x': (?P<x>\d+)")

Para sua dados de amostra, o resultado é:

           y   x
   match        
0  0      49  49
   1      78  31
1  0      78  31
   1      75  51
2  0      75  51
   1      71  35
3  0      71  35
   1      95  41
4  0      95  41
   1      88  72
5  0      88  72
   1      75  77
6  0      25  23
   1      15  39
7  0      15  39
   1      20  33
8  0      85  61
   1      80  67
9  0      80  67
   1      61  59
10 0      61  59
   1      45  45

O primeiro nível no MultiIndex do resultado (sem nome) é o índice da linha de origem. O segundo nível (chamado jogo ) é o número jogo para a linha atual, a partir de 0 .

Acho que você gosta

Origin http://10.200.1.11:23101/article/api/json?id=376818&siteId=1
Recomendado
Clasificación