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

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

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

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Spyder

Spyderとは、Pythonで分析するために作られたIDEです。プログラムの編集・実行・入力補完・デバッグなどの基本的なIDE機能の他、科学用途の計算をするために要するライブラリも装備。公式・サードパーティ製のプラグインもあり、機能を拡張することもできます。

Python

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

pandas

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

Q&A

解決済

1回答

1195閲覧

pandasでobject型からfloat型に変換したい

kojyake

総合スコア1

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Spyder

Spyderとは、Pythonで分析するために作られたIDEです。プログラムの編集・実行・入力補完・デバッグなどの基本的なIDE機能の他、科学用途の計算をするために要するライブラリも装備。公式・サードパーティ製のプラグインもあり、機能を拡張することもできます。

Python

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

pandas

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

0グッド

0クリップ

投稿2022/11/29 02:38

編集2022/11/29 04:27

前提・実現したいこと

pandasでcsvから読み込んだDataframeの特定列データ型をobjectからfloatへ変更したい。

プログラミングを勉強し始めて1か月にも満たない初学者です。
分からないことも多く知識も少ないので、拙いコード・説明であること先にお詫び申し上げます。

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

NO. int64 Time datetime64[ns] jac object temp object top object dtype: object

datetime変換まで実行後Dataframe

イメージ説明

元のCSVデータ

ベンダ,"GRAPHTEC Corporation" モデル,"GL240" バージョン,"Ver1.52 " 最大CH数,10 WL開始CH,10 最大ロジックCH数,4 Logic/Pulse,Off,Off 温度単位,C 測定間隔,2s 測定点数,10524 トリガ点,0 開始時刻,2022-11-04,09:11:43 終了時刻,2022-11-04,15:02:31 トリガ時刻,2022-11-04,09:11:44 アンプ設定 CH,信号名,アンプ,入力,レンジ,温度レンジ,フィルタ,スパン,,単位,線色,,,線幅 CH1," CH 1","M",TEMP,TC_K,2000degC,Off,+100.0,+0.0,[degC],28,5,6,0 CH2," CH 2","M",TEMP,TC_K,2000degC,Off,+100.0,+0.0,[degC],0,13,23,0 CH4," CH 4","M",TEMP,TC_K,2000degC,Off,+100.0,+0.0,[degC],21,0,21,0 演算設定 CH,左項,演算子,右項,スケーリング,スパン,,単位 測定値 番号,日付/時間,ms,CH1,CH2,CH4,Alarm1-10,AlarmOut NO.,Time,ms,"degC","degC","degC","A1234567890","AO1234" 1,2022/11/04 09:11:44, 0,+ 20.0,+ 22.3,+ 24.3,LLLLLLLLLL,LLLL 2,2022/11/04 09:11:46, 0,+ 20.0,+ 22.3,+ 24.4,LLLLLLLLLL,LLLL 3,2022/11/04 09:11:48, 0,+ 20.0,+ 22.3,+ 24.4,LLLLLLLLLL,LLLL 4,2022/11/04 09:11:50, 0,+ 20.0,+ 22.4,+ 24.4,LLLLLLLLLL,LLLL 5,2022/11/04 09:11:52, 0,+ 20.0,+ 22.3,+ 24.4,LLLLLLLLLL,LLLL 6,2022/11/04 09:11:54, 0,+ 20.0,+ 22.4,+ 24.4,LLLLLLLLLL,LLLL 7,2022/11/04 09:11:56, 0,+ 20.0,+ 22.3,+ 24.6,LLLLLLLLLL,LLLL 8,2022/11/04 09:11:58, 0,+ 20.0,+ 22.3,+ 24.6,LLLLLLLLLL,LLLL 9,2022/11/04 09:12:00, 0,+ 20.0,+ 22.3,+ 24.6,LLLLLLLLLL,LLLL 10,2022/11/04 09:12:02, 0,+ 19.9,+ 22.3,+ 24.6,LLLLLLLLLL,LLLL 11,2022/11/04 09:12:04, 0,+ 19.9,+ 22.3,+ 24.6,LLLLLLLLLL,LLLL 12,2022/11/04 09:12:06, 0,+ 20.0,+ 22.3,+ 24.6,LLLLLLLLLL,LLLL 13,2022/11/04 09:12:08, 0,+ 20.0,+ 22.4,+ 24.6,LLLLLLLLLL,LLLL 14,2022/11/04 09:12:10, 0,+ 20.0,+ 22.4,+ 24.6,LLLLLLLLLL,LLLL 15,2022/11/04 09:12:12, 0,+ 20.0,+ 22.3,+ 24.7,LLLLLLLLLL,LLLL 16,2022/11/04 09:12:14, 0,+ 20.0,+ 22.4,+ 24.7,LLLLLLLLLL,LLLL 17,2022/11/04 09:12:16, 0,+ 20.0,+ 22.4,+ 24.7,LLLLLLLLLL,LLLL 18,2022/11/04 09:12:18, 0,+ 20.0,+ 22.5,+ 24.7,LLLLLLLLLL,LLLL 19,2022/11/04 09:12:20, 0,+ 20.0,+ 22.5,+ 24.8,LLLLLLLLLL,LLLL 20,2022/11/04 09:12:22, 0,+ 20.0,+ 22.5,+ 24.8,LLLLLLLLLL,LLLL <中略> 299,2022/11/04 09:21:40, 0,+ 20.0,+ 22.2,+ 33.1,LLLLLLLLLL,LLLL 300,2022/11/04 09:21:42, 0,+ 19.9,+ 22.2,+ 33.2,LLLLLLLLLL,LLLL 301,2022/11/04 09:21:44, 0,+ 20.0,+ 22.1,+ 33.2,LLLLLLLLLL,LLLL

該当のソースコード

Spyder(Python3)

1import pandas as pd 2 3df = pd.read_csv("C:〇〇〇.CSV", encoding="shift-jis",header=23)#csvファイルの指定 4 5df = df.rename(columns={'degC':'jac','degC.1': 'temp','degC.2': 'top'})#column名の変更 6df = df.drop(columns=['ms','A1234567890', 'AO1234'])#余計な列の削除 7df = df.drop(range(2)) 8df = df.dropna(how='all', axis=1)#余計な行の削除 9df['Time'] = pd.to_datetime(df['Time']) #Timeをobjectからdatetimeに変換 10 11if type(df.at[2,'jac']) != float: #元データがfloat型ではなかったときは変換する 12 df['jac']=df['jac'].str.replace(' ', "") 13 df['jac'].astype(float) 14 df['temp']=df['temp'].str.replace(' ', "") 15 df['temp'].astype(float) 16 df['top']=df['top'].str.replace(' ', "") 17 df['top'].astype(float) 18 19print(df.dtypes)

試したこと

ifを使用せず、下記コード部分のみ実行にて列要素がfloat型に変換されていることを確認。

df['jac']=df['jac'].str.replace(' ', "") df['jac'].astype(float) >>2 20.0 >>3 20.0 >>4 20.0 >>5 20.0 >>6 20.0 >> ... >>301 20.0 >>name: jac, Length: 301, dtype: float64

しかしながら一要素のみ抽出して確認するとstr型になっている

print(type(df.at[3,'jac'])) >><class 'str'>

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

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

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

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

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

melian

2022/11/29 03:13

pandas.to_numeric() で変換してみてはどうでしょうか。 df['jac'] = pd.to_numeric(df['jac'], errors='coerce')
kojyake

2022/11/29 05:42 編集

ご助言助かります。 記載いただいた通り変更してみましたが、先のコードと同様の結果となりました。 <<追記>> こちらのミスでコピペする際に"df['jac'] = "部分が欠落し解決しなかっただけの様です。 melian様記述の通りで解決しました。
jbpb0

2022/11/29 05:32

df['jac'].astype(float) ↓ 変更 df['jac'] = df['jac'].astype(float) では? (他の二つも)
kojyake

2022/11/29 05:42

ありがとうございます。解決いたしました。
meg_

2022/11/29 10:19

解決されたとのことですので質問をクローズしましょう。 ご自身で解決方法を回答として投稿されるか、最も参考になった人へ回答依頼をしてください。
jbpb0

2022/11/30 02:00

質問者さんが、実際に解決した方法を自分で回答に書いて、「自己解決」にしてください
guest

回答1

0

自己解決

df['jac'].astype(float)
→df['jac'] = df['jac'].astype(float)
で解消しました。

投稿2022/12/04 23:40

kojyake

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問