1. ホーム
  2. python

[解決済み] pandasで列のセットを選択/除外する [重複]。

2022-03-20 11:15:18

質問

既存のデータフレームから、列の選択に基づいてビューまたはデータフレームを作成したいのですが。

例えば、次のようなデータフレームを作成したい。 df2 データフレームから df1 の2つを除いたすべての列を保持しています。以下のようにやってみましたが、うまくいきませんでした。

import numpy as np
import pandas as pd

# Create a dataframe with columns A,B,C and D
df = pd.DataFrame(np.random.randn(100, 4), columns=list('ABCD'))

# Try to create a second dataframe df2 from df with all columns except 'B' and D
my_cols = set(df.columns)
my_cols.remove('B').remove('D')

# This returns an error ("unhashable type: set")
df2 = df[my_cols]

何が間違っているのでしょうか?おそらくより一般的に、pandasはどのようなメカニズムでピッキングと 除外 データフレームから任意の列のセットを抽出することはできますか?

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

不要なカラムを削除するか、必要なカラムを選択します。

# Using DataFrame.drop
df.drop(df.columns[[1, 2]], axis=1, inplace=True)

# drop by Name
df1 = df1.drop(['B', 'C'], axis=1)

# Select the ones you want
df1 = df[['a','d']]