Antworten:
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
list
. Sie haben den list
Konstruktor gerade überschrieben .
df = pd.DataFrame(columns=list("ABC"))
df.loc[len(df)] = [1,2,3]
df
.
Hier ist eine einfache und dumme Lösung:
>>> import pandas as pd
>>> df = pd.DataFrame()
>>> df = df.append({'foo':1, 'bar':2}, ignore_index=True)
Könnten Sie so etwas tun?
>>> import pandas as pd
>>> df = pd.DataFrame(columns=['col1', 'col2'])
>>> df = df.append(pd.Series(['a', 'b'], index=['col1','col2']), ignore_index=True)
>>> df = df.append(pd.Series(['d', 'e'], index=['col1','col2']), ignore_index=True)
>>> df
col1 col2
0 a b
1 d e
Hat jemand eine elegantere Lösung?
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
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
0 1 2 3
[1 rows x 3 columns]
Ohne dass ignore_index=True
Sie 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
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.
df = pd.DataFrame([[1, 2], [3, 4]], columns = ["a", "b"])
to_append = [5, 6]
a_series = pd.Series(to_append, index = df.columns)
df = df.append(a_series, ignore_index=True)