Anhängen einer Liste oder Serie an einen Pandas DataFrame als Zeile?
107
Daher habe ich einen leeren Pandas-DataFrame initialisiert und möchte Listen (oder Serien) iterativ als Zeilen in diesem DataFrame anhängen. Was ist der beste Weg, dies zu tun?
Manchmal ist es einfacher, alle Anhänge außerhalb von Pandas durchzuführen. Erstellen Sie dann einfach den DataFrame auf einmal.
>>>import pandas as pd
>>> simple_list=[['a','b']]>>> simple_list.append(['e','f'])>>> df=pd.DataFrame(simple_list,columns=['col1','col2'])
col1 col2
0 a b
1 e f
Hier ist eine einfachere und dumme Lösung: `` `Pandas importieren als pd df = pd.DataFrame () df = df.append ({'foo': 1, 'bar': 2}, ignore_index = True) # Beachten Sie, dass dies angehängt wird passiert nicht an Ort und Stelle. `` `
Jaidev Deshpande
27
Folgen Sie der Antwort von Mike Chirico ... wenn Sie eine Liste anhängen möchten, nachdem der Datenrahmen bereits ausgefüllt ist ...
>>> list =[['f','g']]>>> df = df.append(pd.DataFrame(list, columns=['col1','col2']),ignore_index=True)>>> df
col1 col2
0 a b
1 d e
2 f g
Erstellt es eine Kopie? Ist es möglich, an Ort und Stelle anzuhängen?
lucid_dreamer
4
Wenn Sie eine Serie hinzufügen und den Serienindex als Spalten des DataFrame verwenden möchten, müssen Sie die Serie nur in Klammern anhängen:
In[1]:import pandas as pd
In[2]: df = pd.DataFrame()In[3]: row=pd.Series([1,2,3],["A","B","C"])In[4]: row
Out[4]:
A 1
B 2
C 3
dtype: int64
In[5]: df.append([row],ignore_index=True)Out[5]:
A B C
0123[1 rows x 3 columns]
Ohne dass ignore_index=TrueSie nicht den richtigen Index erhalten.
Hier ist eine Funktion, die bei einem bereits erstellten Datenrahmen eine Liste als neue Zeile anfügt. Dies sollte wahrscheinlich Fehlerfänger enthalten, aber wenn Sie genau wissen, was Sie hinzufügen, sollte dies kein Problem sein.
import pandas as pd
import numpy as np
def addRow(df,ls):"""
Given a dataframe and a list, append the list as a new row to the dataframe.
:param df: <DataFrame> The original dataframe
:param ls: <list> The new row to be added
:return: <DataFrame> The dataframe with the newly appended row
"""
numEl = len(ls)
newRow = pd.DataFrame(np.array(ls).reshape(1,numEl), columns = list(df.columns))
df = df.append(newRow, ignore_index=True)return df
Antworten:
Manchmal ist es einfacher, alle Anhänge außerhalb von Pandas durchzuführen. Erstellen Sie dann einfach den DataFrame auf einmal.
quelle
list
. Sie haben denlist
Konstruktor gerade überschrieben .quelle
df
.Hier ist eine einfache und dumme Lösung:
quelle
Könnten Sie so etwas tun?
Hat jemand eine elegantere Lösung?
quelle
Folgen Sie der Antwort von Mike Chirico ... wenn Sie eine Liste anhängen möchten, nachdem der Datenrahmen bereits ausgefüllt ist ...
quelle
Wenn Sie eine Serie hinzufügen und den Serienindex als Spalten des DataFrame verwenden möchten, müssen Sie die Serie nur in Klammern anhängen:
Ohne dass
ignore_index=True
Sie nicht den richtigen Index erhalten.quelle
Hier ist eine Funktion, die bei einem bereits erstellten Datenrahmen eine Liste als neue Zeile anfügt. Dies sollte wahrscheinlich Fehlerfänger enthalten, aber wenn Sie genau wissen, was Sie hinzufügen, sollte dies kein Problem sein.
quelle
Das Konvertieren der Liste in einen Datenrahmen innerhalb der Append-Funktion funktioniert auch, wenn sie in einer Schleife angewendet wird
quelle
benutze einfach loc:
quelle
Wie hier erwähnt - https://kite.com/python/answers/how-to-append-a-list-as-a-row-to-a-pandas-dataframe-in-python - müssen Sie zuerst Konvertieren Sie die Liste in eine Serie und hängen Sie die Serie an den Datenrahmen an.
quelle
Der einfachste Weg:
Bearbeiten:
Vergessen Sie nicht, dass die Länge der neuen Liste mit der des entsprechenden Datenrahmens übereinstimmen sollte.
quelle