Disons que j'ai le cadre de données Pandas suivant, sans lignes pour le moment:
'Jeep' | 'Volvo' | 'Honda' ---------------------------- 7 | 0 | 5
J'ai la série Pandas suivante:
Honda 5 Nissan 3 Jeep 7 Toyota 2
Je souhaite ajouter cette série sous forme de ligne (sans inclure les éléments qui ne correspondent pas à un nom de colonne)
Résultat:
'Jeep' | 'Volvo' | 'Honda' --------------------------
Est-il possible de faire ça?
3 Réponses :
Vous pouvez utiliser append pour obtenir les colonnes spécifiques:
>>> df1 = df.append(s, ignore_index=True) >>> df1[df.columns].fillna(0) Jeep Volvo Honda 0 7.0 0.0 5.0 >>>
Ce code est virtuellement:
>>> import pandas as pd >>> df = pd.DataFrame(columns=['Jeep', 'Volvo', 'Honda']) >>> s = pd.Series([5, 3, 7, 2],index=['Honda', 'Nissan', 'Jeep', 'Toyota']) >>> df1 = df.append(s, ignore_index=True) >>> df1[df.columns].fillna(0) Jeep Volvo Honda 0 7.0 0.0 5.0 >>>
p>
Cela semble également ajouter `` Nissan '' comme colonne. Je voudrais qu'il n'en ignore pas déjà les colonnes.
import pandas as pd
df = pd.DataFrame(columns=['Jeep', 'Volvo', 'Honda'])
s = pd.Series({"Honda": 5, "Nissan": 3, "Jeep": 7, "Toyota": 2})
df.append(s[df.columns], ignore_index=True).fillna(0)
Bonne idée, juste un petit tweak de la mienne :-)
Le moindre des ajustements, haha
Lol, ouais :-): p
Vous pouvez utiliser réindexer de différentes manières décrites ci-dessous.
df.append(series.reindex(df.columns, fill_value=0).rename(len(df))) Jeep Volvo Honda 0 7 0 5
series.reindex(df.columns, fill_value=0).to_frame().T Jeep Volvo Honda 0 7 0 5
series.to_frame().T.reindex(df.columns, axis=1, fill_value=0) Jeep Volvo Honda 0 7 0 5
df = pd.DataFrame (); df.append (pd.DataFrame (pd.Series ([1,2,3], index = ['a', 'b', 'c'])). T)Cela peut ne pas être très pertinent à part pour vous, mais
collections.Countergère la sémantique de l'ajout de deux compteurs, des clés manquantes, etc. beaucoup plus gracieusement. De plus, si vous avez une liste complète des marques de voitures, il est plus simple d'initialiser votre df à l'avance, avec zéro compte?