Pandas bauen DataFrame Zeile für Zeile auf

Salman Mehmood 21 Juni 2023
  1. Erstellen Sie Zeilen in Pandas DataFrame
  2. Verwenden der Funktion loc() zum Erstellen von Zeilen in Pandas DataFrame
  3. Verwenden der Funktion pandas.concat() zum Erstellen von Zeilen in Pandas DataFrame
Pandas bauen DataFrame Zeile für Zeile auf

In diesem Artikel wird gezeigt, wie Sie einen Dataframe zeilenweise anstelle der üblicherweise befolgten spaltenweisen Konvention in Pandas erstellen.

Erstellen Sie Zeilen in Pandas DataFrame

Pandas DataFrame ist eine Struktur, die Daten mit zwei Dimensionen und den diesen Dimensionen entsprechenden Beschriftungen speichert. DataFrames sind vergleichbar mit SQL-Tabellen und Tabellenkalkulationen, die in Anwendungen wie Excel und Calc bearbeitet werden können.

Da sie ein wesentlicher Bestandteil der Python- und NumPy-Ökosysteme sind, sind DataFrames häufig Tabellen und Tabellenkalkulationen in Bezug auf Geschwindigkeit, Benutzerfreundlichkeit und Leistung überlegen. Dies ist bei vielen Anwendungen der Fall.

Als Datenspeicherstruktur kann es auf der Grundlage einer bestimmten Bedingung erforderlich sein, dass Daten zeilenweise statt spaltenweise eingegeben werden müssen.

Betrachten Sie den folgenden Code.

import pandas

df = pandas.DataFrame(
    columns=["a", "b", "c", "d", "e"], index=["v", "w", "x", "y", "z"]
)
y = {"a": 1, "b": 5, "c": 2, "d": 3, "e": 7}

print("Attempt 1")
# df['y'] = y
# print(df)

print("Attempt 2")
# df.join(y)

Die folgenden Ausgaben jedes Versuchs werden separat geschrieben.

Ausgabe (Versuch 1):

Attempt 1
     a    b    c    d    e   y
v  NaN  NaN  NaN  NaN  NaN NaN
w  NaN  NaN  NaN  NaN  NaN NaN
x  NaN  NaN  NaN  NaN  NaN NaN
y  NaN  NaN  NaN  NaN  NaN NaN
z  NaN  NaN  NaN  NaN  NaN NaN

Ausgabe (Versuch 2):

Traceback (most recent call last):
  File "d:\Test\test.py", line 13, in <module>
    df.join(y)
  File "C:\Program Files\Python310\lib\site-packages\pandas\core\frame.py", line 9969, in join
    return self._join_compat(
  File "C:\Program Files\Python310\lib\site-packages\pandas\core\frame.py", line 10036, in _join_compat
    can_concat = all(df.index.is_unique for df in frames)
  File "C:\Program Files\Python310\lib\site-packages\pandas\core\frame.py", line 10036, in <genexpr>
    can_concat = all(df.index.is_unique for df in frames)

AttributeError: 'builtin_function_or_method' object has no attribute 'is_unique'

Im obigen Code wird zuerst eine DataFrame-Instanz initialisiert, mit Spalten ['a','b','c','d', 'e'] mit Indizes ['v', 'w','x','y','z']. Das Hauptziel besteht darin, Elemente zeilenweise hinzuzufügen, was in unserem Fall, wie aus dem Code hervorgeht, y ist.

Die in die Eingabe einzugebenden Daten werden initialisiert, wobei die jeder Spalte entsprechenden Werte als {'a':1, 'b':5, 'c':2, 'd':3, 'e' angegeben werden: 7}.

Im ersten Versuch werden die erstellten Daten dem DataFrame zugewiesen, indem sie mit df[y] auf den Index y gesetzt werden. Wie aus der Ausgabe hervorgeht, wird jedoch eine neue Spalte erstellt, deren Mitglieder wie bei allen anderen Elementen NaN sind.

Beim zweiten Versuch wird die Methode join() verwendet, um zu versuchen, die deklarierten Daten mit dem DataFrame selbst zu verbinden, was ebenfalls einen Fehler ausgibt, das Objekt "builtin_function_or_method' has no attribute 'is_unique'". Dieses Problem kann mit den folgenden unten erwähnten Techniken angegangen werden.

  • Verwendung der Funktion loc().
  • Verwendung der Funktion pandas.concat().

Verwenden der Funktion loc() zum Erstellen von Zeilen in Pandas DataFrame

Betrachten Sie den folgenden Code:

import pandas

df = pandas.DataFrame(
    columns=["a", "b", "c", "d", "e"], index=["v", "w", "x", "y", "z"]
)
print("Current Shape:\n" + str(df))

y = {"a": 1, "b": 5, "c": 2, "d": 3, "e": 7}
df.loc["y"] = pandas.Series(y)

print("DataFrame:\n" + str(df))

Ausgang:

Current Shape:

     a    b    c    d    e
v  NaN  NaN  NaN  NaN  NaN
w  NaN  NaN  NaN  NaN  NaN
x  NaN  NaN  NaN  NaN  NaN
y  NaN  NaN  NaN  NaN  NaN
z  NaN  NaN  NaN  NaN  NaN

DataFrame:

     a    b    c    d    e
v  NaN  NaN  NaN  NaN  NaN
w  NaN  NaN  NaN  NaN  NaN
x  NaN  NaN  NaN  NaN  NaN
y    1    5    2    3    7
z  NaN  NaN  NaN  NaN  NaN

Die Eigenschaft loc der DataFrame-Klasse wird verwendet, um auf eine Zeile oder Spalte eines DataFrame zuzugreifen. Die Eigenschaft loc ermöglicht den Zugriff auf eine einzelne oder eine Gruppe von Zeilen und Spalten und ein boolesches Array.

In unserem Code haben wir die Eigenschaft loc verwendet, da die Eigenschaft labelbasiert ist. Daher haben wir das gewünschte Label (oder den Index) übergeben, in unserem Fall y.

Beachten Sie, dass panda.Series() die Eingabe ausrichten soll, falls Sie nicht alle Elemente angeben müssen.

Verwenden der Funktion pandas.concat() zum Erstellen von Zeilen in Pandas DataFrame

Betrachten Sie den folgenden Code:

import pandas

df = pandas.DataFrame(columns=["a", "b", "c", "d", "e"], index=[])
print("Current Shape:\n" + str(df))

entry = pandas.DataFrame.from_dict(
    {
        "a": [1, 6, 11, 16],
        "b": [2, 7, 12, 17],
        "c": [3, 8, 13, 18],
        "d": [4, 9, 14, 19],
        "e": [5, 10, 15, 20],
    }
)

df = pandas.concat([df, entry])
print("DataFrame:\n" + str(df))

Ausgang:

Current Shape:
Empty DataFrame
Columns: [a, b, c, d, e]
Index: []
DataFrame:
    a   b   c   d   e
0   1   2   3   4   5
1   6   7   8   9  10
2  11  12  13  14  15
3  16  17  18  19  20

Die Methode from_dict(), die ein Wörterbuch enthält, das Spaltennamen und ihre entsprechenden Werte enthält, wird deklariert, aus der ein neuer DataFrame erstellt wird. Diese neu erstellte DataFrame-Instanz wird dann in der Variablen namens entry gespeichert, die den neuen Elementen entspricht, die wir unserem ursprünglichen DataFrame hinzufügen möchten.

Nachdem der DataFrame erstellt und dem DataFrame Daten zugewiesen wurden, müssen wir nun einen Weg finden, die beiden DataFrame-Instanzen zu verbinden. Mit der Methode pandas.concat() können wir zwei DataFrame-Instanzen verketten, und der resultierende DataFrame wird dann in der ersten Instanz gespeichert.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Verwandter Artikel - Pandas DataFrame