Pandas append() row 具体示例

Att*_*nen 2 pandas

我的问题是如何使用 DataFrame 的 append() 方法干净地向 DataFrame 追加一行?

根据docs,append() 将“DataFrame 或 Series/dict-like 对象,或这些对象的列表”作为参数鉴于描述,我认为这样的事情应该是可能的,但我找不到正确的语法:

df = pd.DataFrame(columns=('x', 'y', 'label'))
df.append([2, 4, 1]) # Does not work
Run Code Online (Sandbox Code Playgroud)

我可以追加一行,df.loc[len(df)] = [4, 4, 1]但这不是很干净。

jez*_*ael 5

需要或相同或相同:DataFrame.appendSeriesDataFrameindexcolumns namesdf

df1 = pd.DataFrame([[2, 4, 1]], columns=('x', 'y', 'label'))
print (df1)
   x  y  label
0  2  4      1

df = df.append([pd.Series([4, 4, 1], index = df.columns)], ignore_index=True)
df = df.append(df1, ignore_index=True)
#your solution
df.loc[len(df)] = [4, 4, 1]
print (df)
     x    y  label
0  4.0  4.0    1.0
1  2.0  4.0    1.0
2  4.0  4.0    1.0
Run Code Online (Sandbox Code Playgroud)
#dont align because default columns names
df = df.append([[4, 4, 1]])
print (df)
     x    y label    0    1    2
0  NaN  NaN   NaN  4.0  4.0  1.0
Run Code Online (Sandbox Code Playgroud)

但如果默认列名:

df = pd.DataFrame(columns=range(3))
print (df)
Empty DataFrame
Columns: [0, 1, 2]
Index: []

df = df.append([[4, 4, 1]])
print (df)
     0    1    2
0  4.0  4.0  1.0
Run Code Online (Sandbox Code Playgroud)