回答:
パンダの外側ですべての追加を行う方が簡単な場合もあります。その場合は、DataFrameを一度に作成するだけです。
>>> 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
。list
コンストラクタを上書きしました。
df = pd.DataFrame(columns=list("ABC"))
df.loc[len(df)] = [1,2,3]
df
。
シンプルでおかしなソリューションは次のとおりです。
>>> import pandas as pd
>>> df = pd.DataFrame()
>>> df = df.append({'foo':1, 'bar':2}, ignore_index=True)
このようなことをしてもらえますか?
>>> 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
誰かがよりエレガントな解決策を持っていますか?
Mike Chiricoの回答に従います...データフレームが既に入力されている後にリストを追加したい場合...
>>> 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
Seriesを追加し、DataFrameの列としてSeriesのインデックスを使用する場合は、大括弧の間にSeriesを追加するだけです。
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]
Whitoutはignore_index=True
適切なインデックスを取得しません。
これは、すでに作成されたデータフレームを前提として、リストを新しい行として追加する関数です。これにはおそらくエラーキャッチャーがスローされているはずですが、何を追加するかが正確にわかっている場合は問題になりません。
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
ここで言及したように-https://kite.com/python/answers/how-to-append-a-list-as-a-row-to-a-pandas-dataframe-in-python、最初に必要がありますリストをシリーズに変換し、シリーズをデータフレームに追加します。
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)