Respostas:
Eu acho que concat
é uma boa maneira de fazer isso. Se estiverem presentes, ele usa os atributos de nome da série como colunas (caso contrário, simplesmente os numera):
In [1]: s1 = pd.Series([1, 2], index=['A', 'B'], name='s1')
In [2]: s2 = pd.Series([3, 4], index=['A', 'B'], name='s2')
In [3]: pd.concat([s1, s2], axis=1)
Out[3]:
s1 s2
A 1 3
B 2 4
In [4]: pd.concat([s1, s2], axis=1).reset_index()
Out[4]:
index s1 s2
0 A 1 3
1 B 2 4
Nota: Isso se estende a mais de 2 séries.
pd.concat([list_of_dataframes])
e concorrer várias vezes new_df = pd.DataFrame(); for df in list_of_dsf: new_df = pd.concat([new_df, df])
ou similar.
Os pandas alinham automaticamente os passados em série e criam o índice conjunto. Eles são os mesmos aqui. reset_index
move o índice para uma coluna.
In [2]: s1 = Series(randn(5),index=[1,2,4,5,6])
In [4]: s2 = Series(randn(5),index=[1,2,4,5,6])
In [8]: DataFrame(dict(s1 = s1, s2 = s2)).reset_index()
Out[8]:
index s1 s2
0 1 -0.176143 0.128635
1 2 -1.286470 0.908497
2 4 -0.995881 0.528050
3 5 0.402241 0.458870
4 6 0.380457 0.072251
Código de exemplo:
a = pd.Series([1,2,3,4], index=[7,2,8,9])
b = pd.Series([5,6,7,8], index=[7,2,8,9])
data = pd.DataFrame({'a': a,'b':b, 'idx_col':a.index})
O Pandas permite criar um DataFrame
de a dict
com Series
como valores e nomes de colunas como chaves. Quando encontra a Series
como valor, usa o Series
índice como parte do DataFrame
índice. Esse alinhamento de dados é uma das principais vantagens do Pandas. Consequentemente, a menos que você tenha outras necessidades, o recém-criado DataFrame
possui um valor duplicado. No exemplo acima, data['idx_col']
possui os mesmos dados que data.index
.
Se eu puder responder isso.
Os fundamentos por trás da conversão de séries em quadro de dados é entender que
1. No nível conceitual, cada coluna no quadro de dados é uma série.
2. E todo nome de coluna é um nome de chave que é mapeado para uma série.
Se você mantiver acima de dois conceitos em mente, poderá pensar em várias maneiras de converter séries em quadros de dados. Uma solução fácil será assim:
Crie duas séries aqui
import pandas as pd
series_1 = pd.Series(list(range(10)))
series_2 = pd.Series(list(range(20,30)))
Crie um quadro de dados vazio com apenas os nomes de coluna desejados
df = pd.DataFrame(columns = ['Column_name#1', 'Column_name#1'])
Colocar o valor da série dentro do quadro de dados usando o conceito de mapeamento
df['Column_name#1'] = series_1
df['Column_name#2'] = series_2
Verifique os resultados agora
df.head(5)
Não tenho certeza se entendi completamente sua pergunta, mas é isso que você deseja fazer?
pd.DataFrame(data=dict(s1=s1, s2=s2), index=s1.index)
( index=s1.index
nem é necessário aqui)
Uma simplificação da solução com base em join()
:
df = a.to_frame().join(b)
Eu usei pandas para converter minha matriz ou iseries numpy em um dataframe e adicionei e adicionei a coluna adicional por chave como 'previsão'. Se você precisar converter o quadro de dados novamente em uma lista, use values.tolist ()
output=pd.DataFrame(X_test)
output['prediction']=y_pred
list=output.values.tolist()