Kaggleをやっていて気になったので質問いたしました。
表題の通りなのですが、dataframe.列名とdataframe['列名']でアクセスするのには何か違いがあるのでしょうか?
また、使い分けするシチュエーションがあれば教えていただきたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
bsdfanさんの回答への補足です。
dataframe['列名']というのが本来の書き方であり、そのうちである条件を満たす場合に簡単に使えるようにしたものがdataframe.列名という形式です。
その手法としては、3.3.2. 属性値アクセスをカスタマイズするに書かれているobject.__getattribute__を使っています。
数値で始まるカラム名や空白を含むカラム名が使えない理由は、Pythonの字句解析がそういうものを解析できないからです。
したがって、'+', '-'のような演算記号とか、'('、'='のようなデリミタ、'if'、'for'、'break'のような予約語を属性名として使うことはできません。
もともとpandas.DataFrameが持っている属性と同じカラム名が使えないのは、できてしまうと誤動作の原因になるので、それをできないように作ってるあるからです。
投稿2021/07/01 05:58
編集2021/07/01 06:57総合スコア24670
0
jeanbiegoさんのに追加で、
下記のようなケースでもdf.列名は使えません。
python
1df = pd.DataFrame({'00foo': [1, 2], 'mean': [3, 4]}) 2 3df.00foo 4# SyntaxError 5 6df.mean 7# <bound method NDFrame._add_numeric_operations.<locals>.mean...
- 数値で始まるカラム名
- 空白を含むカラム名
- もともとpandas.DataFrameが持っている属性と同じカラム名
あと、dataframe['列名']を使うほうがほんの少しだけですが、速いです。
私は、df.列名 のメリットは、コードの見た目がスッキリすることぐらいだと思っていますので、
ほとんど使いません。
投稿2021/07/01 04:17
総合スコア4794
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
DataFrame['列名']では、その列の値が抽出されます。
python
1l=[[1,2],[3,4]] 2import pandas as pd 3df=pd.DataFrame(l,columns=['a','b']) 4df
//[a]列の値を抽出する
DataFrame.['列名']という書き方については、ちょっと分からないのですが、
通常、DataFrame.(メソッド名)という記述により、DataFrameのメソッドが利用できます。
たとえば、こんな感じです。
df.div(df.sum(1),axis=0)
ちなみに、dir(df)により、利用できるメソッドを一覧することができますよ。
投稿2021/07/01 06:06
総合スコア404
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
dataframe.列名はあまり使わないので、考えたことありませんでしたが。あえて言うなら下記のような使い方ができないデメリットがあります…?
python3
1import pandas as pd 2df = pd.DataFrame({'a': [1, 2], 'b': [3, 4]}) 3 4x = 'a' 5print(df[x]) 6# 0 1 7# 1 2 8# Name: a, dtype: int64 9 10print(df.x) 11# AttributeError: 'DataFrame' object has no attribute 'x'
投稿2021/07/01 02:58
総合スコア3966
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。