web-dev-qa-db-ja.com

Pythonで複数のデータフレームを連結するにはどうすればよいですか?

複数(100以上)のデータフレームがあります。どうすればそれらすべてを連結できますか?

問題は、データフレームが多すぎること、次のようにリストに手動で書き込むことができないことです。

>>> cluster_1 = pd.DataFrame([['a', 1], ['b', 2]],
...                    columns=['letter  ', 'number'])


>>> cluster_1
  letter  number
0      a       1
1      b       2


>>> cluster_2 = pd.DataFrame([['c', 3], ['d', 4]],
...                    columns=['letter', 'number'])


>>> cluster_2
  letter  number
0      c       3
1      d       4


>>> pd.concat([cluster_1, cluster_2])
  letter number
0      a       1
1      b       2
0      c       3
1      d       4

N個のデータフレームの名前はcluster_1、cluster_2、cluster_3、...、cluster_Nです。数Nは非常に大きくなる可能性があります。

Nデータフレームを連結するにはどうすればよいですか?

10
PParker

それをリストに入れて、リストを連結するだけでいいと思います。パンダでは、チャンク関数はすでにこれを実行しています。私はパンダでチャンク機能を使用するときに個人的にこれを行います。

pdList = [df1, df2, ...]  # List of your dataframes
new_df = pd.concat(pdList)

Dfが常に「クラスター」で始まると想定して、pdListを自動的に作成します。

pdList = []
pdList.extend(value for name, value in locals().items() if name.startswith('cluster_'))
11
Rui Nian

一般的には次のようになります。

frames = [df1, df2, df3]
result = pd.concat(frames)

注:インデックスは自動的にリセットされます。さまざまな種類のマージの詳細 こちら を参照してください。

多数のデータフレームの場合:何百ものデータフレームがある場合、ディスク上またはメモリ内にあるかどうかに応じて、 forループを使用してリスト(コードスニペットの「フレーム」)。ディスクにある場合は、すべてのdfを1つのフォルダーに保存し、そのフォルダーからすべてのファイルを読み取るだけで簡単に実行できます。

メモリ内にdfを生成する場合は、最初に.pklに保存してみてください。

2
zafrin

使用する:

pd.concat(your list of column names)

そして、通常のインデックスが必要な場合:

pd.concat(your list of column names,ignore_index=True)
1
U10-Forward