1. ホーム
  2. python

[解決済み] Pandas DataFrameの構造だけをコピーする方法はありますか?

2023-06-25 05:48:39

質問

どこからかDataFrameを受け取り、同じ数と名前の列と行(インデックス)を持つ別のDataFrameを作りたいのです。例えば、元のデータフレームが次のように作成されたとします。

import pandas as pd
df1 = pd.DataFrame([[11,12],[21,22]], columns=['c1','c2'], index=['i1','i2'])

カラムと名前を明示的に定義して構造をコピーしました。

df2 = pd.DataFrame(columns=df1.columns, index=df1.index)    

データをコピーしたくないので、そうでなければ、単に df2 = df1.copy() . つまり、df2が作成された後は、NaN要素しか含まれていない必要があります。

In [1]: df1
Out[1]: 
    c1  c2
i1  11  12
i2  21  22

In [2]: df2
Out[2]: 
     c1   c2
i1  NaN  NaN
i2  NaN  NaN

もっと慣用的なやり方はないのでしょうか?

どのように解決するのですか?

それは reindex_like . オリジナルから始める。

df1 = pd.DataFrame([[11, 12], [21, 22]], columns=['c1', 'c2'], index=['i1', 'i2'])

空のDataFrameを構築し、df1のようにインデックスを付け直します。

pd.DataFrame().reindex_like(df1)
Out: 
    c1  c2
i1 NaN NaN
i2 NaN NaN