Quelle est la signification de “l'axe” de l'attribut dans une Pandas DataFrame?
En prenant l'exemple suivant:
>>> df1 = pd.DataFrame({"x":[1, 2, 3, 4, 5],
"y":[3, 4, 5, 6, 7]},
index=['a', 'b', 'c', 'd', 'e'])
>>> df2 = pd.DataFrame({"y":[1, 3, 5, 7, 9],
"z":[9, 8, 7, 6, 5]},
index=['b', 'c', 'd', 'e', 'f'])
>>> pd.concat([df1, df2], join='inner')
La sortie est:
y
a 3
b 4
c 5
d 6
e 7
b 1
c 3
d 5
e 7
f 9
Depuis axis=0
les colonnes, je pense que tha concat()
ne considère que les colonnes que l'on trouve dans les deux dataframes. Mais le acutal sortie considère lignes que l'on trouve dans les deux dataframes.
Ce qui est exactement le sens de axis
paramètre?
Il n'est pas sur l'axe de l'argument. C'est à propos de
Pensez Catholique Romaine. ou "R" - "C" ou de lignes - Colonnes -> Zéro ou Un.
join='inner'
. Regarder les docs! join: {‘inner’, ‘outer’}, default ‘outer’. How to handle indexes on other axis(es). Outer for union and inner for intersection
Pensez Catholique Romaine. ou "R" - "C" ou de lignes - Colonnes -> Zéro ou Un.
OriginalL'auteur lxdthriller | 2016-09-02
Vous devez vous connecter pour publier un commentaire.
Si quelqu'un a besoin d'une description visuelle, voici l'image:
OriginalL'auteur debaonline4u
De données:
Concaténées horizontalement (axis=1), à l'aide de index des éléments trouvé dans les deux DFs (aligné par des index pour les joindre):
Concaténées verticalement (par DÉFAUT: axis=0), à l'aide de colonnes trouvé dans les deux DFs:
Si vous n'utilisez pas le
inner
méthode join - vous aurez de cette façon:OriginalL'auteur MaxU
C'est mon truc avec de l'axe: il suffit d'ajouter de l'opération dans votre esprit pour faire son clair:
Si vous “somme” par le biais de l'axe=0, vous additionnez toutes les lignes, et le résultat sera une seule ligne avec le même nombre de colonnes.
Si vous “somme” par le biais de l'axe=1, vous additionnez toutes les colonnes, et le résultat sera une seule colonne avec le même nombre de lignes.
OriginalL'auteur Rod292
Interpréter l'axe=0 pour appliquer l'algorithme en bas de chaque colonne ou de la ligne d'étiquettes (l'index).. plus détaillée du schéma ici.
Si vous faites une interprétation générale de votre cas, l'algorithme est ici
concat
. Ainsi, pour axis=0, cela signifie:pour chaque colonne, de prendre toutes les lignes vers le bas (dans tous les dataframes pour
concat
) , et de ne communiquer avec eux lorsqu'ils sont en commun (parce que vous avez sélectionnéjoin=inner
).De sorte que le sens serait de prendre toutes les colonnes
x
et concat dans les lignes qui serait pile chaque bloc de lignes l'une après l'autre. Cependant, icix
n'est pas présent partout, de sorte qu'il n'est pas conservé pour le résultat final. La même chose s'applique pourz
. Poury
le résultat est conservé commey
est dans tous les dataframes. C'est le résultat que vous avez.OriginalL'auteur Boud
D'abord, OP mal compris les lignes et les colonnes dans son dataframe.
OP pensée l'étiquette
y
est pour ligne. Cependant,y
est un nom de colonne.Il est très facile d'être induit en erreur puisque dans le dictionnaire, il ressemble à
y
etx
sont deux lignes.Si vous générez
df1
à partir d'une liste de liste, il devrait être plus intuitive:Donc, pour revenir au problème,
concat
est un raccourci pour concaténer (moyens à lier dans une série ou de la chaîne sur cette voie [source]) de la scèneconcat
le long de axe 0 signifie à la liaison entre les deux objets le long de l'axe 0.Donc... pensez que vous avez le sentiment maintenant. Qu'en est
somme
fonction dans les pandas? Ce n'sum(axis=0)
signifie?Supposons que les données ressemble à
Peut-être...en additionnant le long de l'axe 0, vous pouvez le deviner. Oui!!
Ce sujet
dropna
? Supposons que vous avez donnéeset vous ne voulez garder
Sur la documentation, il est dit objet de Retour avec des étiquettes sur l'axe omis où alternativement l'une ou de la totalité des données sont manquantes
Devrait vous mettre
dropna(axis=0)
oudropna(axis=1)
? Pensez-y et essayez-la avecAstuce: pensez à le mot le long de.
OriginalL'auteur Tai