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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

2回答

468閲覧

astype(float)を用いた型の変更について

n3n1_

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2022/12/20 10:16

前提

pythonを用いてCSVデータの処理を行おうとしています。

 変更不要列00JST01JST
1-0.71.4 
2-1.20.8 
3-1.50.3 
-

このようなCSVの内容なのですが、一度すべてobjectとして読み込み、指定した箇所のみをastype(float)を用いて型の変更を行いたいです。
大きめのファイルであり、データ型の混交が指摘されたため一度すべて型の指定を行って読み込みを行っています。

実現したいこと

  • 指定個所のデータ型をfloatに変更したい。

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

ValueError: could not convert string to float: '00JST'

該当のソースコード

python

1df1 = pd.read_csv('2017.csv', dtype = object) 2 3x = ['00JST','01JST','02JST','03JST','04JST','05JST','06JST','07JST','08JST','09JST','10JST','11JST','12JST','13JST','14JST','15JST','16JST','17JST','18JST','19JST','20JST','21JST','22JST','23JST'] 4df1 = df1[x].astype(float)

試したこと

replace()を用いて”JST”を取り除こうとしてみましたが同様のエラーが起きました。

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

python3.10.5を用いています。
初心者ですので拙い質問かもしれませんが、教えていただきたいです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

提示コードでのx変換したい列のリストであるならば、以下のようなループで処理するとよいです。

Python

1x = ['00JST','01JST',] 2for c in x: 3 df1[c] = df1[c].astype(float)

投稿2022/12/20 10:41

can110

総合スコア38266

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

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

0

ベストアンサー

ValueError: could not convert string to float: '00JST'

以下、pandas.to_numeric() を利用して float 型に変換しますが、数値に変換できない文字列は NA に置き換えられます。

python

1import pandas as pd 2 3df1 = pd.read_csv('2017.csv', dtype = object) 4x = ['00JST', '01JST', '02JST', '03JST', '04JST', 5 '05JST', '06JST', '07JST', '08JST', '09JST', 6 '10JST', '11JST', '12JST', '13JST', '14JST', 7 '15JST', '16JST', '17JST', '18JST', '19JST', 8 '20JST', '21JST', '22JST', '23JST'] 9 10df1[x] = df1[x].apply(pd.to_numeric, errors='coerce') 11print(df1)

投稿2022/12/20 10:23

編集2022/12/20 12:07
melian

総合スコア19805

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

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

n3n1_

2022/12/20 10:34

melianさん ご回答ありがとうございます。 この場合ですと、読み込んだCSVはどこに行くのでしょうか。 お返事お待ちしております。
melian

2022/12/20 11:47 編集

ごめんなさい、質問を読み間違えていました。回答を更新しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問