Converter Pandas Series em DataFrame

  1. Converter um único Pandas Series para Dataframe utilizando pandas.Dataframe()
  2. Converter um único Pandas Series para Dataframe utilizando pandas.Series.to_frame()
  3. Converter Series de Pandas Múltiplos em Dataframes

A criação de novas colunas a partir da Series derivada ou existente é uma actividade formidável na engenharia de características. A nova Series ou coluna recentemente criada pode ser convertida em Dataframe utilizando as funções nativas dos pandas. Neste artigo, vamos introduzir como converter a Series de Pandas para Dataframe.

Nos exemplos seguintes, trabalharemos no Dataframe criado utilizando o seguinte snippet.

import pandas as pd
import numpy as np

np.random.seed(0)

df_series = pd.Series(np.random.randint(0,100,size=(10)),
                        index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])

print (df_series)

Resultado:

a    44
b    47
c    64
d    67
e    67
f     9
g    83
h    21
i    36
j    87
dtype: int64

Converter um único Pandas Series para Dataframe utilizando pandas.Dataframe()

A Series pode ser transformada num Dataframe utilizando como argumento o Dataframe() Construtor, enviando a Pandas Series.

import pandas as pd
import numpy as np

np.random.seed(0)

df_series = pd.Series(np.random.randint(0,100,size=(10)),
                        index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])

print (pd.DataFrame(df_series, columns=['A']))

Resultado:

    A
a  81
b  37
c  25
d  77
e  72
f   9
g  20
h  80
i  69
j  79

Como se viu acima, a saída da função retorna um Dataframe.

Converter um único Pandas Series para Dataframe utilizando pandas.Series.to_frame()

Esta função converte a dada Pandas Series para um Dataframe. O nome da coluna pode ser definido com o argumento name.

import pandas as pd
import numpy as np

np.random.seed(0)

df_series = pd.Series(np.random.randint(0,100,size=(10)), 
                        index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])

print (df_series.to_frame(name='A'))

Resultado:

    A
a  44
b  47
c  64
d  67
e  67
f   9
g  83
h  21
i  36
j  87

Pode haver cenários em que a série dada não tem qualquer nome. Em situações como estas, o método reset_index() pode vir a ser útil.

import pandas as pd
import numpy as np

np.random.seed(0)

df_series = pd.Series(np.random.randint(0,100,size=(10)), 
                        index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']).rename_axis('index')

print (df_series)
print ('\n')
print (df_series.reset_index())

Resultado:

index
a    44
b    47
c    64
d    67
e    67
f     9
g    83
h    21
i    36
j    87
dtype: int64


  index   0
0     a  44
1     b  47
2     c  64
3     d  67
4     e  67
5     f   9
6     g  83
7     h  21
8     i  36
9     j  87

Como se viu acima, o quadro de dados criado contém uma nova coluna chamada 0. A coluna chamada 0 pode ser renomeada utilizando o argumento name que pode ser fornecido à função reset_index(), como se mostra abaixo.

import pandas as pd
import numpy as np

np.random.seed(0)

df_series = pd.Series(np.random.randint(0,100,size=(10)), 
                        index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']).rename_axis('index')

print (df_series)
print ('\n')
print (df_series.reset_index(name='A'))

Resultado:

index
a    44
b    47
c    64
d    67
e    67
f     9
g    83
h    21
i    36
j    87
dtype: int64


  index   A
0     a  44
1     b  47
2     c  64
3     d  67
4     e  67
5     f   9
6     g  83
7     h  21
8     i  36
9     j  87

Converter Series de Pandas Múltiplos em Dataframes

Os exemplos acima referidos demonstraram a capacidade de converter apenas uma única Pandas Series a um Dataframe. E se houvesse várias Series, e estas precisassem de ser costuradas juntas para um único Dataframe? Ao criar a Série individual, o dataframe pode ser criado concatenando utilizando a função concat().

import pandas as pd
import numpy as np

np.random.seed(0)

df_series1 = pd.Series(np.random.randint(0,100,size=(10)), 
                        index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
df_series2 = pd.Series(np.random.randint(40,100,size=(10)), 
                        index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
df_series3 = pd.Series(np.random.randint(80,100,size=(10)), 
                        index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])

df_stitched = pd.concat([df_series1, df_series2, df_series3], axis=1)

print (df_stitched)

Resultado:

    0   1   2
a  44  46  97
b  47  64  85
c  64  64  93
d  67  52  88
e  67  98  89
f   9  41  99
g  83  78  96
h  21  79  99
i  36  63  85
j  87  86  95

Note que a função pd.concat() incluía um argumento axis=1, que corresponde ao apêndice ao longo da coluna. Se o axis não for fornecido, haverá uma fusão ou união em linha em todos os Dataframes.

Artigo relacionado - Pandas DataFrame

  • Subtraia duas colunas de um DataFrame Pandas
  • Como Iterar Através de Linhas de um DataFrame em Pandas
  • Artigo relacionado - Pandas Series

  • Comparar Pandas DataFrame Objectos
  • Seleccionar Várias Colunas em Pandas Dataframe