teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

1回答

2648閲覧

'NoneType' object has no attribute 'loc'

Noah_4217

総合スコア9

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/02/24 06:36

0

0

前提

csvから読み込んだデータフレームを引数にして、データの前処理をしてくれる関数を作ってます。 今回の例で言うと、 ALLpitch2018.csvというcsvファイルを読み込みdf1というデータフレームを作成しました。 ですがこのままだと単位が違ったり、英語が使われていたり、いらない列がたくさん含まれていて見づらかったりするのでpreparationという関数を作りました。 引数にdf1のようなデータフレームを入れることで単位変換した新しい列を追加したり、列名をリネイムしたり、.locで必要な列だけを抽出しようと試みました。 すると、以下のようなエラーが発生しました。 このエラーの原因と解決方法が知りたいです。 どうかよろしくお願いします。

コード

python3

1 2 3import pandas as pd 4 5df1 = pd.read_csv('ALLpitch2018.csv') 6 7def preparation(df_local) : 8 9 10 df_local['球速(km/h)'] = df_local['release_speed'] * 1.60934 11 12 13 df_local = df_local.rename(columns = { 14 15 'pitch_type' : '球種' , 16 'game_date' : '試合日' , 17 'player_name' : '選手名' , 18 19 }, inplace = True) 20 21 22 df_local = df_local.loc[ : , ['球種', '試合日', '選手名', '球速(km/h)']] 23 24 25preparation(df1) 26 27

エラーメッセージ

AttributeError: 'NoneType' object has no attribute 'loc'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

inplace = True が余分ですので削除してください。


【追記】私の環境では下記コードで動作しております。

Python

1import pandas as pd 2 3df1 = pd.DataFrame({'release_speed':[50, 100, 120], 'pitch_type':['straight', 'curv', 'folk'], 'game_date':['2020/1/15', '2020/3/1', '2020/5/23', ], 'player_name':['Mark', 'Karl', 'Bob']}) 4 5def preparation(df_local) : 6 7 df_local['球速(km/h)'] = df_local['release_speed'] * 1.60934 8 df_local = df_local.rename(columns = { 9 'pitch_type' : '球種' , 10 'game_date' : '試合日' , 11 'player_name' : '選手名' , 12 }) 13 14 df_local = df_local.loc[ : , ['球種', '試合日', '選手名', '球速(km/h)']] 15 print(df_local) 16# 球種 試合日 選手名 球速(km/h) 17#0 straight 2020/1/15 Mark 80.4670 18#1 curv 2020/3/1 Karl 160.9340 19#2 folk 2020/5/23 Bob 193.1208 20 21print(df1) 22# game_date pitch_type player_name release_speed 23#0 2020/1/15 straight Mark 50 24#1 2020/3/1 curv Karl 100 25#2 2020/5/23 folk Bob 120 26 27preparation(df1) 28

投稿2020/02/24 10:20

編集2020/02/29 08:02
meg_

総合スコア10950

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Noah_4217

2020/02/29 07:31

削除したらrenameが反映されなくなりました。
Noah_4217

2020/02/29 07:37

df_local = を削除したところ、renameは反映されました。 しかし、最後の.locがうまく反映されません。どうすればよろしいでしょうか?
meg_

2020/02/29 07:56

状況を整理するため、最新のコードとエラーが出ている場合はそのエラーメッセ―ジを質問に追記してください。エラーが出ていない場合はlocの処理の前後でdf_localの値がどうなっているかを掲載してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問