Eu tenho duas séries s1
e s2
com os mesmos índices (não consecutivos). Como combinar s1
e s2
ser duas colunas em um DataFrame e manter um dos índices como uma terceira coluna?
278
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 vezesnew_df = pd.DataFrame(); for df in list_of_dsf: new_df = pd.concat([new_df, df])
ou similar.Por que você não usa apenas .to_frame se ambos têm os mesmos índices?
> =
v0.23
<
v0.23
fonte
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.fonte
Código de exemplo:
O Pandas permite criar um
DataFrame
de adict
comSeries
como valores e nomes de colunas como chaves. Quando encontra aSeries
como valor, usa oSeries
índice como parte doDataFrame
índice. Esse alinhamento de dados é uma das principais vantagens do Pandas. Consequentemente, a menos que você tenha outras necessidades, o recém-criadoDataFrame
possui um valor duplicado. No exemplo acima,data['idx_col']
possui os mesmos dados quedata.index
.fonte
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
Crie um quadro de dados vazio com apenas os nomes de coluna desejados
Colocar o valor da série dentro do quadro de dados usando o conceito de mapeamento
Verifique os resultados agora
fonte
Não tenho certeza se entendi completamente sua pergunta, mas é isso que você deseja fazer?
(
index=s1.index
nem é necessário aqui)fonte
Uma simplificação da solução com base em
join()
:fonte
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 ()
fonte