Quelques façons d'ajouter de nouvelles colonnes et lignes à une table créée.
Il existe d'autres fonctions et méthodes qui peuvent être utilisées, mais pour le moment, seules les bases.
Création de table de base
row0 = [1, 2, 3]
row1 = [10, 20, 30]
row2 = [100, 200, 300]
df = pd.DataFrame([row0,row1,row2], columns=['col0','col1','col2'])
df.index = ['row0', 'row1', 'row2']
df
・ Df ['A'] ・ Attribuer une méthode ・ Méthode de jointure ・ Fonction Concat
■df['A']
df['A'] = B
└ "df": table d'origine
└ "A": nom de la colonne à ajouter
└ "B": ce qu'il faut ajouter
Vous pouvez spécifier ce que vous souhaitez ajouter relativement librement. Des valeurs numériques, des valeurs, des données de table, des formules, des listes, etc. peuvent être utilisées.
** ▼ Étude de cas ** ① Ajouter une colonne (liste) ② Ajout de colonnes (valeur numérique) ③ Ajouter une colonne (table) ④ Ajouter une colonne (formule)
Ajouter une colonne (liste)
df['col3'] = [4, 40, 400]
df
Ajouter une colonne (nombre)
df['col3'] = 4
df
Ajouter une colonne (table)
df['col3'] = df['col2']
df
Ajouter une colonne (formule)
df['col3'] = df['col2'] * 100
df
・ Non écrasé ・ Aucun quota requis pour les noms de colonnes -Si l'élément est spécifié par liste, il doit correspondre au nombre de lignes de la table de base.
・ Aucun nom de colonne TypeError: assign() takes 1 positional argument but 2 were given
・ Le nombre d'éléments dans la liste ne correspond pas ValueError: Length of values does not match length of index
1 ligne ajoutée
df.assign(A=[1,2,3])
1 colonne ajoutée (données de table / formule)
df.assign(A=df['col0']*100)
2 colonnes ajoutées
df.assign(A=[1,2,3], B=100)
Si vous ajoutez "nom de colonne = contenu", le nombre de colonnes augmentera.
join(dfA, rsuffix='_a')
└ "dfA": Table à joindre
└ "rsuffix = '_ a'": Si les noms de colonnes sont dupliqués, ajoutez "_a" (facultatif) aux noms de colonnes ajoutés.
(1) Ajouter une table avec les mêmes noms de ligne (pas de noms de colonne en double) (2) Ajouter une table avec des noms de lignes qui n'existent pas ③ Lorsque le nom de la colonne est dupliqué ④ Lorsque certains noms de colonnes sont dupliqués
Lorsque le nom de ligne correspond au nom de ligne de la table de base et que le nom de colonne ne chevauche pas celui existant.
Table avec le même nom de ligne
dfA = pd.DataFrame([100,200,300])
dfA.index = ['row0', 'row1', 'row2']
dfA
** ▼ Ajouter **
ajouter à
df.join(dfA)
Une nouvelle colonne a été ajoutée.
S'il existe un nom de ligne qui n'existe pas dans la table de base └ ** Aucune nouvelle ligne n'est ajoutée à la table de base **. └ ** Les données dont les noms de ligne ne correspondent pas seront NaN ** (valeur manquante).
Table avec des noms de ligne inexistants
dfB = pd.DataFrame([100,200,300])
dfB.index = ['row0', 'XXX', 'YYY']
dfB
** ▼ Ajouter **
ajouter à
df.join(dfB)
Si le nom de colonne est dupliqué, spécifiez le dernier caractère à ajouter au nom de colonne dupliqué avec "rsuffix = '_ a'".
** ▼ Options **
"Rsuffix = '_ a'": ** Ajouter le caractère spécifié au nom de colonne en double ** à ajouter (abréviation du suffixe de droite)
"Lsuffix = '_ a'": ** Ajouter le caractère spécifié au nom de colonne en double existant ** (abréviation du suffixe gauche)
Nom de colonne en double
dfC = pd.DataFrame([100,200,300], columns=['col0'])
dfC.index = ['row0', 'row1', 'XXX']
dfC
** ▼ Ajouter (pour rsuffix) **
rsuffix
df.join(dfC, rsuffix='_@')
rsuffix
df.join(dfC, lsuffix='_@')
-Les colonnes en double ont le suffixe spécifié dans le nom de la colonne. -Les noms de colonnes qui ne se chevauchent pas sont ajoutés tels quels.
Noms de colonnes partiellement dupliqués
list1 = [100,200,300]
list2 = ['A','B','C']
list3 = ['AAA','BBB','CCC']
list4 = ['10A','20B','30C']
dfD = pd.DataFrame([list1,list2, list3, list4], columns=['col0', 111,'col1'])
dfD.index = ['row0', 'row1', 'XXX', 'YYY']
dfD
rsuffix
df.join(dfD, rsuffix='_@')
pd.concat([df, dfA], axis=1)
└ "df": table de base
└ "dfA": Table à ajouter
└ "axis = 1": Instruction pour ajouter une colonne
-Ajouter tel quel même si le nom de la colonne est dupliqué -Ajouter une nouvelle ligne si le nom de la ligne est différent (par défaut: join = 'outside') -Avec l'option join = 'inner', ne laissez que ceux avec des noms de ligne correspondants
・ Signification de "concat" concaténer: concaténer. relier.
-Les colonnes "col0" et "col1" se chevauchent avec la table de base. -La ligne "xxx" n'est pas dans la table de base
Table à rejoindre
list1 = [1,100,'AAA']
list2 = [2,200,'BBB']
list3 = [3,300,'CCC']
dfE = pd.DataFrame([list1,list2, list3], columns=['col0', 'col1', 'aaa'])
dfE.index = ['row0', 'row1', 'XXX']
dfE
** "axis = 1" est requis lors de l'ajout de colonnes **. S'il n'est pas attaché, il sera ajouté dans le sens des lignes et le résultat sera significativement différent.
「axis=1 "Oui
pd.concat([df, dfA], axis=1)
・ Ajouter une colonne -Ajouter tel quel même si le nom de la colonne est dupliqué (différent de la méthode de jointure) -La valeur de la ligne ne figurant pas dans la table à ajouter est NaN. -Ajout de nouvelles lignes qui ne sont pas dans la table de base.
「axis=1 "aucun
pd.concat([df, dfA])
-Si les noms de colonne ne correspondent pas, une nouvelle colonne est ajoutée. -Même si le nom de la ligne est dupliqué, tous sont nouvellement ajoutés.
** * Les colonnes sont ajoutées, mais les lignes ne sont pas intégrées, donc c'est différent de ce que vous voulez exécuter. ** **
sort=True
pd.concat([df, dfA], axis=1)
La ligne "XXX" propose un tri automatique.
sort=False
pd.concat([df, dfA], axis=1, sort=False)
Si vous écrivez "sort = False", la ligne ajoutée sera ajoutée à la fin.
sort=False
pd.concat([dfA, df], axis=1, sort=False)
Une ligne qui n'existe pas dans la base "dfA" est ajoutée à la fin.
join='outer'
└ Réglage par défaut.
└ Laissez une ligne qui n'existe pas.
join='inner'
└ Ne laissez que les lignes en double.
join='outer'
pd.concat([dfA, df], axis=1)
Une ligne "XXX" qui n'existe pas avant et après la fusion est ajoutée.
join='outer'
pd.concat([dfA, df], axis=1, join='inner')
Suppression des lignes "row2" et "XXX" qui n'existent que dans l'un ou l'autre.
・ Méthode Loc ・ Fonction Concat
df.loc['A']=B
└ "df": table d'origine
└ "A": Nom de la ligne à ajouter
└ "B": ce qu'il faut ajouter
Vous pouvez spécifier ce que vous souhaitez ajouter relativement librement. Des valeurs numériques, des valeurs, des données de table, des formules, des listes, etc. peuvent être utilisées.
① Ajouter une ligne (liste) ② Ajouter une ligne (valeur numérique) ③ Ajouter une ligne (tableau) ④ Ajouter une ligne (formule)
Ajouter une ligne (liste)
df.loc['AAA'] = [4, 40, 400]
df
Ajouter une ligne (numéro)
df.loc['AAA'] = 4
df
Ajouter une ligne (table)
df.loc['AAA'] = df.loc['row2']
df
Ajouter une ligne (formule)
df.loc['AAA'] = df.loc['row2'] * 100
df
pd.concat([df, dfA])
└ "df": table de base
└ "dfA": Table à ajouter
-Ajouter tel quel même si le nom de la ligne est dupliqué -Ajouter une nouvelle colonne si le nom de la colonne est différent (par défaut: join = 'outside') -Avec l'option join = 'inner', ne laissez que ceux avec des noms de colonne correspondants
・ Signification de "concat" concaténer: concaténer. relier.
Table à rejoindre
list1 = [1,100,'AAA']
list2 = [2,200,'BBB']
dfA = pd.DataFrame([list1,list2], columns=['col0', 'col1', 'aaa'])
dfA.index = ['row0', 'XXX']
dfA
Défaut
pd.concat([df, dfA])
-Même si le nom de la ligne est dupliqué, tous sont nouvellement ajoutés. -Ajouter une nouvelle colonne pour les noms de colonnes incompatibles. ・ Les cellules non applicables sont remplies de NaN (valeur manquante)
sort=True
pd.concat([df, dfA])
La colonne "aaa" ajoutée plus tard arrive en tête par tri automatique.
sort=False
pd.concat([df, dfA], sort=False)
La colonne "aaa" ajoutée ultérieurement est jointe à la fin.
join='outer'
└ Réglage par défaut.
└ Laissez une colonne qui n'existe pas.
join='inner'
└ Ne laissez que les colonnes en double.
join='outer'(Défaut)
pd.concat([df, dfA])
La colonne "aaa" qui n'existe pas dans la table avant et après la jointure reste.
join='inner'
pd.concat([df, dfA], join='inner')
Seules les colonnes qui existent dans les deux tables avant et après la jointure restent.
Recommended Posts