4 列の pandas DataFrame があり、そのうち 3 列のみを持つ新しいDataFrameを作成したいと考えています。この質問は次の質問に似ています:データフレームから特定の列を抽出するただし、Pandas では R ではありません。次のコードは機能せず、エラーが発生し、Pandas で実行する方法ではありません。
import pandas as pd
old = pd.DataFrame({'A' : [4,5], 'B' : [10,20], 'C' : [100,50], 'D' : [-30,-50]})
new = pd.DataFrame(zip(old.A, old.C, old.D))
# raises TypeError: data argument can't be an iterator
パンダのやり方は何ですか?
ベストアンサー1
これを行う方法はあり、それは実際にはRに似ています
new = old[['A', 'C', 'D']].copy()
ここでは、元のデータ フレームから必要な列を選択し、それらの変数を作成しています。新しいデータ フレームを変更する場合は、 を.copy()
回避するために を使用することをお勧めしますSettingWithCopyWarning
。
別の方法としてはfilter
、デフォルトでコピーを作成する を使用することです。
new = old.filter(['A','B','D'], axis=1)
最後に、元のデータフレームの列数によっては、 を使用してこれを表現する方が簡潔になる場合がありますdrop
(これにより、デフォルトでコピーも作成されます)。
new = old.drop('B', axis=1)