Pandasデータフレームの列数を取得するにはどうすればよいですか?


184

pandasデータフレームの列数をプログラムでどのように取得しますか?私は次のようなものを望んでいました:

df.num_columns

回答:


305

そのようです:

import pandas as pd
df = pd.DataFrame({"pear": [1,2,3], "apple": [2,3,4], "orange": [3,4,5]})

len(df.columns)
3

35
plus df.shapeは(n_rows、n_columns)のタプルを与える
mkln 2013年

3
@mkln df.shape [1]を回答として投稿した場合、+ 1します。これはnumpyで作業するためのより良い方法であり、別の答えになるに値します。
Phil Cooper

完了しました。@PhilCooper多分あなたはなぜあなたdf.shapeがより良いのかを説明できますか?私の推測では、それは関数を呼び出さず、メモリから属性を読み取るだけですか?
mkln 2013年

113

代替:

df.shape[1]

df.shape[0]は行数です)


2
+1は、martixタイプの構文でnumpyおよびpandasオブジェクトのアドレス指定を推奨するためです。(df.shape vs len(df.columns))。パンダ記述子の形状を見るとlen(df.columns)が呼び出されますが、numpy配列と行列はそれらを属性として持っています。最も効率的なベクトル化された操作は、ベクトル化された操作とは対照的に、通常のpythonシンタで実行でき、ほとんど常に誤りです(numba / jit操作は、その批評から除外されています)
Phil Cooper

26

データフレームを保持する変数がdfと呼ばれる場合、次のようになります。

len(df.columns)

列の数を示します。

そして、行数を必要とする人のために:

len(df.index)

行と列の両方の数を含むタプルの場合:

df.shape

3
len(df)行を与えませんか?
Padraic Cunningham、

4
@PadraicCunningham pandasには、忘れがちなショートカットがたくさんあるので、無視して、メインロジックを使用して解決します。場合によっては処理速度を犠牲にすることもありますが、私はコーディング時間とコードの可読性を数秒の処理時間よりも重視しています。この特定の場合:行数がlen(df.index)で計算できることがわかった場合、次回は列数が必要になったときにlen(df.columns)を実行するのが自然になります。
multigoodverse


0

df.info()関数は、以下のような結果を提供します。sepパラメータなしのPandasのread_csvメソッドまたは「、」付きのsepを使用している場合。

raw_data = pd.read_csv("a1:\aa2/aaa3/data.csv")
raw_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5144 entries, 0 to 5143
Columns: 145 entries, R_fighter to R_age

0

列番号や列情報を取得するための複数のオプションがあります:
それらを確認しましょう。

local_df = pd.DataFrame(np.random.randint(1,12、size =(2,6))、columns = ['a'、 'b'、 'c'、 'd'、 'e'、 'f '])1. local_df.shape [1]-> Shape属性は、(行と列)(0,1)としてタプルを返します。

  1. local_df.info()-> infoメソッドは、データフレームとその列(列数、列のデータ型、null値以外の数、データフレームによるメモリ使用量など)に関する詳細情報を返します

  2. len(local_df.columns)-> columns属性はデータフレーム列のインデックスオブジェクトを返し、len関数は利用可能な列の合計を返します。

  3. local_df.head(0)->パラメータ0のheadメソッドは、実際にはヘッダーのみであるdfの最初の行を返します。

列の数が10以下であると仮定します。ループの楽しみの場合:local_dfのxのli_count = 0:li_count = li_count + 1 print(li_count)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.