追加 - python pandas 使い方




pandas DataFrameの列ヘッダーからリストを取得する (12)

私はpandas DataFrameから列ヘッダーのリストを取得したいと思います。 DataFrameはユーザの入力から来るので、そこに何カラムあるのか、何が呼び出されるのか分かりません。

たとえば、次のようなDataFrameがあるとします。

>>> my_dataframe
    y  gdp  cap
0   1    2    5
1   2    3    9
2   8    7    2
3   3    4    7
4   6    7    7
5   4    8    3
6   8    2    8
7   9    9   10
8   6    6    4
9  10   10    7

私は以下のようなリストを取得したいと思います:

>>> header_list
[y, gdp, cap]

ノートブックで

IPythonのノートブックでのデータの探索のために、私の好みの方法はこれです:

sorted(df)

アルファベット順の読みやすいリストが作成されます。

コードリポジトリ

コードでは、より明示的に行うことができます

df.columns

それは他人にあなたのコードを読んでいることを伝えているからです。


Simeon Visserによって答えられたように...あなたはできる

list(my_dataframe.columns.values) 

または

list(my_dataframe) # for less typing.

しかし、私はほとんどのスイートスポットがあると思う:

list(my_dataframe.columns)

明示的であり、同時に不必要に長くはない。


いくつかの簡単なテストや、おそらくdataframe.columns.values.tolist()を使ったdataframe.columns.values.tolist()バージョンが最も速いのでしょうか?

In [1]: %timeit [column for column in df]
1000 loops, best of 3: 81.6 µs per loop

In [2]: %timeit df.columns.values.tolist()
10000 loops, best of 3: 16.1 µs per loop

In [3]: %timeit list(df)
10000 loops, best of 3: 44.9 µs per loop

In [4]: % timeit list(df.columns.values)
10000 loops, best of 3: 38.4 µs per loop

(私はまだ本当にlist(dataframe)が好きなので、感謝EdChum!)


このソリューションでは、オブジェクトmy_dataframeのすべての列が一覧表示されます。

print(list(my_dataframe))

これは、リスト内の列の名前を返します。

list(my_dataframe.columns)

tolist()という別の関数も使用できます。

my_dataframe.columns.tolist()

すばやく素早く視覚的に確認するには、次のようにしてください:

for col in df.columns:
    print col

インデックス属性を使用できます

df = pd.DataFrame({'col1' : np.random.randn(3), 'col2' : np.random.randn(3)},
                 index=['a', 'b', 'c'])

以下のようにして値をリストとして取得できます。

list(my_dataframe.columns.values)

また、あなたは単に以下を使うことができます:

list(my_dataframe)

私は質問が追加の説明に値すると思う。

@fixxxerが指摘したように、答えはプロジェクトで使用しているパンダのバージョンによって異なります。 あなたはpd.__version__コマンドでどれを得ることができますか?

私のような何らかの理由で(0.14.1を使用しているdebian jessieで)、0.16.0よりも古いバージョンのpandasを使用している場合は、次のものを使用する必要があります。

df.keys().tolist()メソッドがまだ実装されていないため、 df.keys().tolist()

この鍵の方法の利点は、新しいバージョンのパンダでも機能するため、より普遍的です。


面白いですが、 df.columns.values.tolist()df.columns.values.tolist() 3倍の速度ですが、同じであると思いました。

In [97]: %timeit df.columns.values.tolist()
100000 loops, best of 3: 2.97 µs per loop

In [98]: %timeit df.columns.tolist()
10000 loops, best of 3: 9.67 µs per loop

list(a_dataframe)

これはそれを行う必要があります!


n = []
for i in my_dataframe.columns:
    n.append(i)
print n




dataframe