293

4 列の pandas DataFrame があり、列が 3 つしかない新しいDataFrameを作成したいと考えています。この質問は次のようなものです: Extracting specific columns from a data frame but for pandas not R.

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 

それを行うパンダニックな方法は何ですか?

4

9 に答える 9

566

これを行う方法があり、実際には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)
于 2016-01-08T17:51:14.147 に答える
15

別のより簡単な方法は次のようです。

new = pd.DataFrame([old.A, old.B, old.C]).transpose()

どこでold.column_nameあなたにシリーズを与えるでしょう。保持するすべての列シリーズのリストを作成し、それを DataFrame コンストラクターに渡します。形状を調整するには転置を行う必要があります。

In [14]:pd.DataFrame([old.A, old.B, old.C]).transpose()
Out[14]: 
   A   B    C
0  4  10  100
1  5  20   50
于 2019-01-15T06:50:18.750 に答える
13

インデックス別の列:

# selected column index: 1, 6, 7
new = old.iloc[: , [1, 6, 7]].copy() 
于 2019-09-24T09:05:44.943 に答える
1

新しいデータ フレームが必要な場合は、次のようにします。

import pandas as pd
old = pd.DataFrame({'A' : [4,5], 'B' : [10,20], 'C' : [100,50], 'D' : [-30,-50]})
new=  old[['A', 'C', 'D']]
于 2020-01-24T15:41:09.623 に答える