Réponses:
Je pense que concat
c'est une bonne façon de le faire. S'ils sont présents, il utilise les attributs de nom de la série comme colonnes (sinon il les numérote simplement):
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
Remarque: Cela s'étend à plus de 2 séries.
pd.concat([list_of_dataframes])
vs concaténer plusieurs fois new_df = pd.DataFrame(); for df in list_of_dsf: new_df = pd.concat([new_df, df])
ou similaire.
Pourquoi n'utilisez-vous pas simplement .to_frame si les deux ont les mêmes index?
> = v0.23
a.to_frame().join(b)
< v0.23
a.to_frame().join(b.to_frame())
Les pandas aligneront automatiquement ceux-ci passés en série et créeront l'index conjoint. Ils se trouvent être les mêmes ici. reset_index
déplace l'index vers une colonne.
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
Exemple de code:
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})
Pandas vous permet de créer un à DataFrame
partir d'un dict
avec Series
comme valeurs et les noms de colonnes comme clés. Lorsqu'il trouve un en Series
tant que valeur, il utilise l' Series
index comme partie de l' DataFrame
index. Cet alignement des données est l'un des principaux avantages des Pandas. Par conséquent, à moins que vous n'ayez d'autres besoins, la nouvelle création DataFrame
a une valeur dupliquée. Dans l'exemple ci-dessus, data['idx_col']
a les mêmes données que data.index
.
Si je peux répondre à cela.
Les principes fondamentaux de la conversion de séries en trames de données sont de comprendre que
1. Au niveau conceptuel, chaque colonne du bloc de données est une série.
2. Et, chaque nom de colonne est un nom de clé qui correspond à une série.
Si vous gardez à l'esprit deux concepts, vous pouvez penser à de nombreuses façons de convertir des séries en bloc de données. Une solution simple sera comme ceci:
Créez deux séries ici
import pandas as pd
series_1 = pd.Series(list(range(10)))
series_2 = pd.Series(list(range(20,30)))
Créez un bloc de données vide avec juste les noms de colonnes souhaités
df = pd.DataFrame(columns = ['Column_name#1', 'Column_name#1'])
Mettre la valeur de la série dans le bloc de données en utilisant le concept de mappage
df['Column_name#1'] = series_1
df['Column_name#2'] = series_2
Vérifiez les résultats maintenant
df.head(5)
Je ne suis pas sûr de bien comprendre votre question, mais est-ce ce que vous voulez faire?
pd.DataFrame(data=dict(s1=s1, s2=s2), index=s1.index)
( index=s1.index
n'est même pas nécessaire ici)
Une simplification de la solution basée sur join()
:
df = a.to_frame().join(b)
J'ai utilisé des pandas pour convertir mon tableau ou iseries numpy en une trame de données, puis j'ai ajouté et ajouté la colonne supplémentaire par clé en tant que «prédiction». Si vous avez besoin que la trame de données soit reconvertie en liste, utilisez values.tolist ()
output=pd.DataFrame(X_test)
output['prediction']=y_pred
list=output.values.tolist()