[Python] So fügen Sie einer Tabelle Zeilen und Spalten hinzu (pandas DataFrame)

[Python] So fügen Sie einer Tabelle Zeilen und Spalten hinzu (pandas DataFrame)

Einige Möglichkeiten, einer erstellten Tabelle neue Spalten und Zeilen hinzuzufügen.

Es gibt andere Funktionen und Methoden, die verwendet werden können, aber vorerst nur die Grundlagen.


**Inhaltsverzeichnis**
  1. [Originaltabelle](# 1 Originaltabelle)
  2. [Spalte hinzufügen](# 2 Spalte hinzufügen)
    1. df['A']
  3. [Spalte (Liste) hinzufügen](# Spaltenliste hinzufügen)
  4. [Spalte (Nummer) hinzufügen](# Spalte hinzufügen)
  5. [Spalte hinzufügen (Tabelle)](# Spaltentabelle hinzufügen)
  6. [Spalte (Formel hinzufügen)](# Spaltenformel hinzufügen)
  7. [Methode zuweisen](# Methode zuweisen)
  8. [Join-Methode](# Join-Methode)
  9. [Tabelle mit denselben Zeilennamen hinzufügen](# Tabelle mit denselben Zeilennamen hinzufügen Keine doppelten Spaltennamen)
  10. [Tabelle mit nicht vorhandenen Zeilennamen hinzufügen](# Tabelle mit nicht vorhandenen Zeilennamen hinzufügen)
  11. [Wenn Spaltennamen dupliziert werden](# Wenn Spaltennamen dupliziert werden)
  12. [Wenn einige Spaltennamen dupliziert werden](#Wenn einige Spaltennamen dupliziert werden)
  13. [concat function](Spalte #concat function)
  14. [Verbundene Tabelle](# Spalte Verbundene Tabelle)
  15. [Anwesenheit / Abwesenheit der Achse = 1](Anwesenheits- / Abwesenheitsspalte von # Achse1)
  16. [Sortieroption](Spalte # Sortieroption)
  17. [Join-Option](# Join-Optionsspalte)
  18. [Zeile hinzufügen](Zeile Nr. 3 hinzugefügt)
  19. [loc-Methode](# loc-Methode)
  20. [Zeile hinzufügen (Liste)](# Zeilenliste hinzufügen)
  21. [Zeile hinzufügen (numerischer Wert)](#Zusatznummer der Zeile)
  22. [Zeile hinzufügen (Tabelle)](# Zeilentabelle hinzufügen)
  23. [Zeile hinzufügen (Formel)](# Zeilenformel hinzufügen)
  24. [concat function](#concat Funktionszeile)
  25. [Tabelle verbinden](# Tabellenzeile verbinden)
  26. Standard
  27. [Sortieroption](# Sortieroptionszeile)
  28. [Join-Option](# Join-Optionszeile)

## 1. 1. Originaltisch Fügen Sie Zeilen und Spalten basierend auf einer 3-mal-3-Tabelle hinzu .. In Variable df gespeichert.

image.png

Basistabellenerstellung


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

## 2. Spalte hinzufügen Intuitiv einfach zu bedienen sind `df ['A']` und` assign`.

・ Df ['A'] ・ Methode zuweisen ・ Join-Methode ・ Concat-Funktion

■df['A'] df['A'] = B └ "df": Originaltabelle └ "A": Name der hinzuzufügenden Spalte └ "B": Was hinzuzufügen ist

Sie können relativ frei angeben, was Sie hinzufügen möchten. Es können numerische Werte, Werte, Tabellendaten, Formeln, Listen usw. verwendet werden.

** ▼ Fallstudie ** ① Spalte hinzufügen (Liste) ② Hinzufügen von Spalten (numerischer Wert) ③ Spalte (Tabelle) hinzufügen ④ Spalte (Formel) hinzufügen


#### ① Spalte hinzufügen (Liste)

Spalte hinzufügen (Liste)


df['col3'] = [4, 40, 400]
df

image.png


#### ② Hinzufügen von Spalten (numerischer Wert)

Spalte (Nummer) hinzufügen


df['col3'] = 4
df

image.png


#### ③ Spalte (Tabelle) hinzufügen

Spalte (Tabelle) hinzufügen


df['col3'] = df['col2']
df

image.png


#### ④ Spalte (Formel) hinzufügen

Spalte hinzufügen (Formel)


df['col3'] = df['col2'] * 100
df

image.png


## ■ Methode zuweisen Sie können auch hinzufügen, indem Sie den Spaltennamen mit der Zuweisungsmethode angeben. `df.assign(A=[a,b,,], B=[c,d,,],,)` └ "A" "B": Spaltenname, der hinzugefügt werden soll └ "a, b ,," "c, d ,,": Inhalt jeder Spalte

・ Nicht überschrieben ・ Für Spaltennamen ist kein Kontingent erforderlich -Wenn das Element in der Liste angegeben ist, muss es mit der Anzahl der Zeilen in der Basistabelle übereinstimmen.


> Fehlerbeispiel ・ Der Spaltenname enthält ein Kontingent SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

・ Kein Spaltenname TypeError: assign() takes 1 positional argument but 2 were given

・ Die Anzahl der Elemente in der Liste stimmt nicht überein ValueError: Length of values does not match length of index


** ▼ 1 Zeile hinzugefügt **

1 Zeile hinzugefügt


df.assign(A=[1,2,3])

image.png


** ▼ 1 Spalte hinzugefügt (Tabellendaten / Formel) **

1 Spalte hinzugefügt (Tabellendaten / Formel)


df.assign(A=df['col0']*100)

image.png


** ▼ 2 Spalten hinzugefügt **

2 Spalten hinzugefügt


df.assign(A=[1,2,3], B=100)

image.png

Wenn Sie "Spaltenname = Inhalt" hinzufügen, erhöht sich die Anzahl der Spalten.


## ■ Join-Methode Die Join-Methode kann zum Verknüpfen von Tabellen verwendet werden. Es kann nicht für Dinge verwendet werden, die keine Zeilennummer (Index) haben, wie z. B. Liste und Nummern.

join(dfA, rsuffix='_a') └ "dfA": Zu verbindende Tabelle └ "rsuffix = '_ a'": Wenn die Spaltennamen dupliziert werden, fügen Sie "_a" (optional) zu den hinzugefügten Spaltennamen hinzu.


** ▼ Fallstudie ** Überprüfen Sie die Verarbeitung für jedes hinzuzufügende Muster der Tabelle.

(1) Fügen Sie eine Tabelle mit demselben Zeilennamen hinzu (keine doppelten Spaltennamen). (2) Fügen Sie eine Tabelle mit nicht vorhandenen Zeilennamen hinzu ③ Wenn der Spaltenname dupliziert wird ④ Wenn einige Spaltennamen dupliziert werden


#### (1) Fügen Sie eine Tabelle mit demselben Zeilennamen hinzu (keine doppelten Spaltennamen).

Wenn der Zeilenname mit dem Zeilennamen der Basistabelle übereinstimmt und sich der Spaltenname nicht mit dem vorhandenen überschneidet.

Tabelle mit demselben Zeilennamen


dfA = pd.DataFrame([100,200,300])
dfA.index = ['row0', 'row1', 'row2']
dfA

image.png

** ▼ Hinzufügen **

hinzufügen


df.join(dfA)

image.png

Eine neue Spalte wurde hinzugefügt.


#### (2) Fügen Sie eine Tabelle mit nicht vorhandenen Zeilennamen hinzu

Wenn es einen Zeilennamen gibt, der in der Basistabelle nicht vorhanden ist └ ** Der Basistabelle werden keine neuen Zeilen hinzugefügt **. └ ** Daten, deren Zeilennamen nicht übereinstimmen, sind NaN ** (fehlender Wert).


** ▼ Tabelle zum Hinzufügen ** Es existiert nur row0. XXX und YYY befinden sich nicht in der Basistabelle.

Tabelle mit nicht vorhandenen Zeilennamen


dfB = pd.DataFrame([100,200,300])
dfB.index = ['row0', 'XXX', 'YYY']
dfB

image.png

** ▼ Hinzufügen **

hinzufügen


df.join(dfB)

image.png


#### ③ Wenn der Spaltenname dupliziert wird `join(dfA, rsuffix='_a')`

Wenn der Spaltenname dupliziert wird, geben Sie das letzte Zeichen an, das dem doppelten Spaltennamen mit "rsuffix = '_ a'" hinzugefügt werden soll.

** ▼ Optionen **


** Wenn nicht angegeben, tritt ein Fehler ** auf.
** ▼ Tabelle zum Hinzufügen ** Eine Tabelle, die denselben Spaltennamen (col0) wie eine vorhandene Tabelle enthält.

Doppelter Spaltenname


dfC = pd.DataFrame([100,200,300], columns=['col0'])
dfC.index = ['row0', 'row1', 'XXX']
dfC

image.png

** ▼ Hinzufügen (für rsuffix) **

rsuffix


df.join(dfC, rsuffix='_@')

image.png


** ▼ Hinzufügen (für lsuffix) **

rsuffix


df.join(dfC, lsuffix='_@')

image.png


#### ④ Wenn einige Spaltennamen dupliziert werden Der Vorgang ist der gleiche wie beim Duplizieren des Spaltennamens in ③.
** ▼ Tabelle zum Hinzufügen ** Eine Tabelle, die dieselben Spaltennamen (col0, col1) wie eine vorhandene Tabelle enthält.

Teilweise doppelte Spaltennamen


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

image.png


** ▼ Hinzufügen **

rsuffix


df.join(dfD, rsuffix='_@')

image.png


## ■ Concat-Funktion (Spalte) Verbinden Sie Tabellen mit der Funktion concat.

pd.concat([df, dfA], axis=1)


└ "dfA": Tabelle zum Hinzufügen └ "axis = 1": Anweisung zum Hinzufügen einer Spalte ・ Hinzufügen, auch wenn der Spaltenname doppelt vorhanden ist ・ Hinzufügen einer neuen Zeile, wenn der Zeilenname unterschiedlich ist (Standard: join = 'Outer') ) ・ Lassen Sie mit der Option join = 'inner' nur diejenigen mit übereinstimmenden Zeilennamen. ① Tabelle zum Verbinden ② Vorhandensein oder Nichtvorhandensein einer Achse = 1 ③ Sortieroption ④ Beitrittsoption
> ・ Listen- und Zahlenwerte können nicht kombiniert werden -TypeError: cannot concatenate object of type ''; only Series and DataFrame objs are valid

・ Bedeutung von "concat" verketten: Verketten. verbinden.


### ① Zu verbindende Tabelle (Spalte) Verwenden Sie die Tabelle "dfA" in 3 Zeilen und 3 Spalten unten.

image.png

-Spalten "col0" und "col1" überlappen sich mit der Basistabelle. -Die Zeile "xxx" befindet sich nicht in der Basistabelle

Tabelle zum Beitreten


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

### ② Vorhandensein / Fehlen einer Achse = 1 (Spalte) `pd.concat([df, dfA], axis=1)`

** "Achse = 1" ist erforderlich, wenn Spalten hinzugefügt werden **. Wenn es nicht angehängt ist, wird es in Zeilenrichtung hinzugefügt und das Ergebnis unterscheidet sich erheblich.


** ▼ Es gibt "Achse = 1" **

「axis=1 ”Ja


pd.concat([df, dfA], axis=1)

image.png

・ Spalte hinzufügen -Add wie es ist, auch wenn der Spaltenname dupliziert ist (anders als die Join-Methode) -Der Wert der Zeile, die nicht in der hinzuzufügenden Tabelle enthalten ist, ist NaN.

  • Neue Zeilen hinzugefügt, die nicht in der Basistabelle enthalten sind.

** ▼ "Achse = 1" Keine ** Die Form, in der "Achse = 0" weggelassen wird. Es wird in Zeilenrichtung kombiniert.

「axis=1 "keine


pd.concat([df, dfA])

image.png

-Wenn die Spaltennamen nicht übereinstimmen, wird eine neue Spalte hinzugefügt.

  • Auch wenn der Zeilenname doppelt vorhanden ist, werden alle neu hinzugefügt.

** * Spalten werden hinzugefügt, aber die Zeilen sind nicht integriert, sodass sich der Inhalt von dem unterscheidet, was Sie ausführen möchten. ** ** **


### ③ Sortieroption (Spalte) Wenn Sie die Tabellen ohne die Sortieroption verbinden, werden sie automatisch nach dem Zeilennamen sortiert. └ Standard: `sort = True`
** ▼ sort = True (Standard) **

sort=True


pd.concat([df, dfA], axis=1)

image.png

Die Zeile "XXX" bietet eine automatische Sortierung.


**▼sort=False**

sort=False


pd.concat([df, dfA], axis=1, sort=False)

image.png

Wenn Sie "sort = False" schreiben, wird die hinzugefügte Zeile am Ende hinzugefügt.


** ▼ Wenn der Basistisch ersetzt wird **

sort=False


pd.concat([dfA, df], axis=1, sort=False)

image.png

Am Ende wird eine Zeile hinzugefügt, die in der Basis "dfA" nicht vorhanden ist.


### ④ Beitrittsoption (Spalte) Bestimmen Sie die Linienverarbeitung (wenn Achse = 1)

join='outer' └ Standardeinstellung. └ Hinterlassen Sie eine nicht vorhandene Zeile.

join='inner' └ Lassen Sie nur doppelte Zeilen.


**▼join='outer'**

join='outer'


pd.concat([dfA, df], axis=1)

image.png

Eine Zeile "XXX", die vor und nach dem Zusammenführen nicht vorhanden ist, wird hinzugefügt.


**▼join='inner'**

join='outer'


pd.concat([dfA, df], axis=1, join='inner')

image.png

Gelöschte Zeilen "row2" und "XXX", die nur in einer der beiden Zeilen vorhanden sind.


## 3. 3. Zeile hinzufügen Die loc-Methode ist intuitiv einfach zu bedienen.

・ Loc-Methode ・ Concat-Funktion

■ loc-Methode

df.loc['A']=B └ "df": Originaltabelle └ "A": Name der hinzuzufügenden Zeile └ "B": Was hinzuzufügen ist

  • Wenn Sie einen vorhandenen Zeilennamen angeben, wird dieser überschrieben.

Sie können relativ frei angeben, was Sie hinzufügen möchten. Es können numerische Werte, Werte, Tabellendaten, Formeln, Listen usw. verwendet werden.

① Zeile hinzufügen (Liste) ② Zeile hinzufügen (numerischer Wert) ③ Zeile hinzufügen (Tabelle) ④ Zeile hinzufügen (Formel)


#### ① Zeile hinzufügen (Liste)

Zeile hinzufügen (Liste)


df.loc['AAA'] = [4, 40, 400]
df

image.png


#### ② Zeile hinzufügen (numerischer Wert)

Zeile (Nummer) hinzufügen


df.loc['AAA'] = 4
df

image.png


#### ③ Zeile hinzufügen (Tabelle)

Zeile (Tabelle) hinzufügen


df.loc['AAA'] = df.loc['row2']
df

image.png image.png


#### ④ Zeile hinzufügen (Formel)

Zeile hinzufügen (Formel)


df.loc['AAA'] = df.loc['row2'] * 100
df

image.png


## ■ Concat-Funktion (Linie) Verbinden Sie Tabellen mit der Funktion concat.

pd.concat([df, dfA]) └ "df": Basistabelle └ "dfA": Tabelle zum Hinzufügen

  • Fügen Sie hinzu, auch wenn der Zeilenname doppelt vorhanden ist
  • Fügen Sie eine neue Spalte hinzu, wenn der Spaltenname unterschiedlich ist (Standard: join = 'Outer').
  • Lassen Sie mit der Option join = 'inner' nur diejenigen mit übereinstimmenden Spaltennamen übrig

① Zu verbindender Tisch ② Standard ③ Sortieroption ④ Beitrittsoption
> ・ Listen- und Zahlenwerte können nicht kombiniert werden -TypeError: cannot concatenate object of type ''; only Series and DataFrame objs are valid

・ Bedeutung von "concat" verketten: Verketten. verbinden.


### ① Zu verbindende Tabelle (Zeile) Verwenden Sie die Tabelle "dfA" in 2 Zeilen und 3 Spalten unten.

image.png

Tabelle zum Beitreten


list1 = [1,100,'AAA']
list2 = [2,200,'BBB']

dfA = pd.DataFrame([list1,list2], columns=['col0', 'col1', 'aaa'])
dfA.index = ['row0', 'XXX']
dfA

#### ② Standard `pd.concat([df, dfA])`

Standard


pd.concat([df, dfA])

image.png

  • Auch wenn der Zeilenname doppelt vorhanden ist, werden alle neu hinzugefügt.
  • Für die nicht übereinstimmenden Spaltennamen wird eine neue Spalte hinzugefügt. ・ Nicht zutreffende Zellen sind mit NaN gefüllt (fehlender Wert)

### ③ Sortieroption (Zeile) Wenn Sie einer Tabelle beitreten, ohne die Sortieroption anzugeben, wird diese automatisch nach dem Spaltennamen sortiert. └ Standard: `sort = True`
** ▼ sort = True (Standard) **

sort=True


pd.concat([df, dfA])

image.png

Die später hinzugefügte Spalte "aaa" wird durch automatische Sortierung nach oben verschoben.


**▼sort=False**

sort=False


pd.concat([df, dfA], sort=False)

image.png

Die später hinzugefügte Spalte "aaa" wird am Ende verbunden.


### ④ Join-Option (Zeile) Entscheiden Sie, wie mit der Spalte umgegangen werden soll.

join='outer' └ Standardeinstellung. └ Lassen Sie eine Spalte, die nicht existiert.

join='inner' └ Lassen Sie nur doppelte Spalten.


**▼join='outer'**

join='outer'(Standard)


pd.concat([df, dfA])

image.png

Die Spalte "aaa", die vor und nach dem Join nicht in der Tabelle vorhanden ist, bleibt erhalten.


**▼join='inner'**

join='inner'


pd.concat([df, dfA], join='inner')

image.png

Es bleiben nur die Spalten übrig, die in beiden Tabellen vor und nach dem Join vorhanden sind.


Zurück zum Anfang (#python, wie man einem Tabellenpandas-Datenrahmen Zeilen und Spalten hinzufügt)

Recommended Posts