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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

794閲覧

列の計算がしたいのに文字列の連結になってしまう

sakamoto8810

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/04/20 05:22

前提・実現したいこと

長打率と出塁率を足したOPSの列を追加したいのですが、文字列の連結となってしまいます。

発生している問題・エラーメッセージ

0 1 2 3 4 5 6 7 8 9 ... 16 17 18 19 20 21 22 23 24 OPS 1 順 位 選 手 選 手 打 率 試 合 打 席 打 数 得 点 安 打 二塁打 ... 犠 打 犠 飛 四 球 故意四 死 球 三 振 併殺打 長打率 出塁率 長打率出塁率 2 1 佐野 恵太 (デ) .328 106 451 402 48 132 20 ... 0 3 42 1 4 58 13 .532 .395 .532.395 3 2 梶谷 隆幸 (デ) .323 109 482 433 88 140 29 ... 1 2 45 3 1 85 4 .527 .387 .527.387 4 3 青木 宣親 (ヤ) .317 107 425 357 64 113 30 ... 0 1 62 2 5 51 6 .557 .424 .557.424 5 4 大島 洋平 (中) .316 118 525 462 58 146 21 ... 9 3 47 3 4 51 5 .381 .382 .381.382 6 5 村上 宗隆 (ヤ) .307 120 515 424 70 130 30 ... 0 1 87 12 3 115 8 .585 .427 .585.427 7 6 高橋 周平 (中) .305 108 438 394 46 120 25 ... 0 3 39 6 2 70 13 .426 .368 .426.368 8 7 宮﨑 敏郎 (デ) .301 113 460 429 47 129 26 ... 0 3 24 2 4 29 15 .464 .341 .464.341 9 8 鈴木 誠也 (広) .300 118 514 430 85 129 26 ... 0 3 72 9 9 73 15 .544 .409 .544.409 10 9 近本 光司 (神) .293 120 519 474 81 139 21 ... 7 1 30 2 7 61 4 .416 .344 .416.344 11 10 坂本 勇人 (巨) .289 115 479 412 64 119 28 ... 1 4 62 7 0 85 9 .500 .379 .500.379 12 11 大山 悠輔 (神) .288 116 471 423 66 122 21 ... 1 1 41 6 5 96 15 .560 .357 .560.357 13 12 丸 佳浩 (巨) .284 120 491 423 63 120 31 ... 3 2 63 4 0 101 3 .553 .375 .553.375 14 13 堂林 翔太 (広) .279 111 451 401 55 112 21 ... 3 2 41 2 4 91 12 .436 .350 .436.350 15 14 松山 竜平 (広) .277 108 425 404 38 112 27 ... 0 3 17 4 1 72 11 .416 .306 .416.306 16 15 岡本 和真 (巨) .275 118 500 440 79 121 26 ... 0 0 55 2 5 85 10 .545 .362 .545.362 17 16 吉川 尚輝 (巨) .274 112 389 354 47 97 16 ... 2 0 30 4 3 60 6 .398 .336 .398.336 18 17 エスコバー (ヤ) .273 104 402 377 27 103 14 ... 1 2 13 6 9 52 9 .329 .312 .329.312 19 18 菊池 涼介 (広) .271 106 429 376 43 102 19 ... 16 1 35 2 1 68 9 .423 .334 .423.334 20 19 ビシエド (中) .267 109 462 409 48 109 23 ... 0 10 34 3 9 48 17 .447 .329 .447.329 21 20 サンズ (神) .257 110 443 377 47 97 16 ... 0 2 61 2 3 106 11 .451 .363 .451.363 22 21 阿部 寿樹 (中) .257 115 459 421 44 108 25 ... 5 2 30 0 1 92 21 .409 .306 .409.306 23 22 山田 哲人 (ヤ) .254 94 384 334 52 85 17 ... 0 2 48 3 0 83 6 .419 .346 .419.346 24 23 ソト (デ) .252 114 480 428 59 108 18 ... 0 5 44 0 3 103 12 .470 .323 .470.323 25 24 田中 広輔 (広) .251 112 454 378 51 95 11 ... 12 4 55 3 5 86 1 .370 .351 .370.351 26 25 京田 陽太 (中) .247 120 491 442 43 109 16 ... 15 1 27 4 6 80 4 .348 .298 .348.298 27 26 坂口 智隆 (ヤ) .246 114 458 398 55 98 14 ... 3 3 47 1 7 60 8 .354 .334 .354.334 28 27 ボーア (神) .243 99 379 329 27 80 8 ... 0 2 45 5 3 88 13 .422 .338 .422.338

該当のソースコード

python

1df['OPS'] = df[23] + df[24] 2df

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

K_3578

2021/04/20 05:34

Pandasのdataframeかな?
K_3578

2021/04/20 05:39

普段Pythonやってないけど野球ネタで釣られただけだが・・・ もう回答付いてますね。
sakamoto8810

2021/04/20 05:46

野球が好きでプログラミングを始めました! まだ解決していないのでぜひ教えていただきたいです。
guest

回答1

0

ベストアンサー

下記を試してみてください。

python3

1# 1行目に文字列が入っているので、各列がfloatでなくobjectになっている。1行目をcolumnsに上げる。 2df.columns = df.iloc[0] 3df = df.shift(-1) 4 5# floatに変換して足す 6df["長打率出塁率"] = df["長打率"].astype(float) + df["出塁率"].astype(float) 7print(df["長打率出塁率"])

投稿2021/04/20 05:37

編集2021/04/20 05:52
jeanbiego

総合スコア3966

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

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

sakamoto8810

2021/04/20 05:45

できませんでした(´;ω;`) KeyError: '長打率' The above exception was the direct cause of the following exception: KeyError Traceback (most recent call last) <ipython-input-6-862da0a34406> in <module> 1 #1行目をcolumnsに上げる ----> 2 df['長打率出塁率'] = df['長打率'].astype(float) + df['出塁率'].astype(float) 3 df ~\anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key) 2900 if self.columns.nlevels > 1: 2901 return self._getitem_multilevel(key) -> 2902 indexer = self.columns.get_loc(key) 2903 if is_integer(indexer): 2904 indexer = [indexer] ~\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance) 2895 return self._engine.get_loc(casted_key) 2896 except KeyError as err: -> 2897 raise KeyError(key) from err 2898 2899 if tolerance is not None: KeyError: '長打率'
jeanbiego

2021/04/20 05:53

あれ? df.columns = df.iloc[0] df = df.shift(-1) は実行できましたか? 実行できていた場合、その後のdfはどうなっていますか。
sakamoto8810

2021/04/20 06:00

私のミスでした! 仰せの通りにやったらうまくいきました! 本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問