回答:
基本となる配列にアクセスして、そのtolistメソッドを呼び出すことができます。
>>> df = pd.DataFrame([[1,2,3],[3,4,5]])
>>> lol = df.values.tolist()
>>> lol
[[1L, 2L, 3L], [3L, 4L, 5L]]
df.to_numpy().tolist()勧めします。
データに保持したい列ラベルとインデックスラベルがある場合、いくつかのオプションがあります。
データの例:
>>> df = pd.DataFrame([[1,2,3],[3,4,5]], \
columns=('first', 'second', 'third'), \
index=('alpha', 'beta'))
>>> df
first second third
alpha 1 2 3
beta 3 4 5
tolist()他の回答に記載された方法は便利ですが、利回りだけコアデータ-あなたのニーズに応じて、十分ではない可能性があります。
>>> df.values.tolist()
[[1, 2, 3], [3, 4, 5]]
1つのアプローチは、DataFrameをjson に変換してからdf.to_json()、もう一度解析することです。これは面倒ですが、to_json()メソッドにはいくつかの便利なオプションがあるため、いくつかの利点があります。
>>> df.to_json()
{
"first":{"alpha":1,"beta":3},
"second":{"alpha":2,"beta":4},"third":{"alpha":3,"beta":5}
}
>>> df.to_json(orient='split')
{
"columns":["first","second","third"],
"index":["alpha","beta"],
"data":[[1,2,3],[3,4,5]]
}
面倒ですが便利かもしれません。
幸いなことに、列と行のリストを作成するのは非常に簡単です。
>>> columns = [df.index.name] + [i for i in df.columns]
>>> rows = [[i for i in row] for row in df.itertuples()]
これにより、
>>> print(f"columns: {columns}\nrows: {rows}")
columns: [None, 'first', 'second', 'third']
rows: [['alpha', 1, 2, 3], ['beta', 3, 4, 5]]
場合はNone、インデックスの名前が気になるよう、それの名前を変更します。
df = df.rename_axis('stage')
次に:
>>> columns = [df.index.name] + [i for i in df.columns]
>>> print(f"columns: {columns}\nrows: {rows}")
columns: ['stage', 'first', 'second', 'third']
rows: [['alpha', 1, 2, 3], ['beta', 3, 4, 5]]
DataFrame.itertuples()か、DataFrame.to_records()このすべてのために?
多分何かが変わったかもしれませんが、これは私が必要とすることをしたndarraysのリストを返しました。
list(df.values)
注: Pandas SeriesまたはDataFrameをNumPy配列またはプレーンなPythonリストに変換する必要がないStack Overflowで多くの場合を見てきました。ライブラリを初めて使用する場合は、必要な機能がすでにPandasオブジェクトによって提供されているかどうかを再確認することを検討してください。
@jppでコメントを引用するには:
実際には、多くの場合、NumPy配列をリストのリストに変換する必要はありません。
Pandas DataFrame / Seriesが機能しない場合は、組み込みDataFrame.to_numpyおよびSeries.to_numpyメソッドを使用できます。
for elem in some_series.values.tolist():シリーズの要素を繰り返し処理できることを知らないため、非常に露骨なケースについて言及しています。この答えについて何がひどいのかわかりません。
DataFrame.iterrows()関数を使用して、指定されたDataframeの各行を反復処理し、各行のデータからリストを作成できます。
# Empty list
row_list =[]
# Iterate over each row
for index, rows in df.iterrows():
# Create list for the current row
my_list =[rows.Date, rows.Event, rows.Cost]
# append the list to the final list
row_list.append(my_list)
# Print
print(row_list)
指定されたデータフレームの各行をリストに正常に抽出できます
L出力にが追加されるのはなぜですか?