Pandas でオブジェクトをフロートに変換

Manav Narula 2023年1月30日
  1. オブジェクトをフロートに変換するには astype() メソッドを使用する
  2. 関数 to_numeric() を使って、Pandas でオブジェクトを float に変換する
Pandas でオブジェクトをフロートに変換

このチュートリアルでは、Pandas でオブジェクト型カラムを float に変換することに焦点を当てます。オブジェクト型のカラムには文字列や他の型の組み合わせが含まれていますが、float には 10 進数の値が含まれています。この記事では、以下の DataFrame で作業を行います。

import pandas as pd

df = pd.DataFrame(
    [["10.0", 6, 7, 8], ["1.0", 9, 12, 14], ["5.0", 8, 10, 6]],
    columns=["a", "b", "c", "d"],
)

print(df)
print("---------------------------")
print(df.info())

出力:

      a  b   c   d
0  10.0  6   7   8
1   1.0  9  12  14
2   5.0  8  10   6
---------------------------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   a       3 non-null      object
 1   b       3 non-null      int64 
 2   c       3 non-null      int64 
 3   d       3 non-null      int64 
dtypes: int64(3), object(1)
memory usage: 224.0+ bytes
None

オブジェクト型のカラム 'a' の型に注意してください。このオブジェクトを float に変換するには、Pandas の pd.to_numeric()astype() 関数を使用します。

注意
このチュートリアルでは、非推奨になり削除された convert_objects() 関数の使用については説明しません。

オブジェクトをフロートに変換するには astype() メソッドを使用する

Pandas はカラムを特定の型に変換するための astype() メソッドを提供しています。メソッドに float を渡し、パラメータ errors'raise' を設定します。例を示します。

import pandas as pd

df = pd.DataFrame(
    [["10.0", 6, 7, 8], ["1.0", 9, 12, 14], ["5.0", 8, 10, 6]],
    columns=["a", "b", "c", "d"],
)

df["a"] = df["a"].astype(float, errors="raise")

print(df.info())

出力:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 4 columns):
a    3 non-null float64
b    3 non-null int64
c    3 non-null int64
d    3 non-null int64
dtypes: float64(1), int64(3)
memory usage: 224.0 bytes

関数 to_numeric() を使って、Pandas でオブジェクトを float に変換する

Pandas の to_numeric() 関数を利用して、リスト、系列、配列、タプルを数値データ型(符号付き、または符号なしの int 型と float 型)に変換することができます。また、例外を発生させるための errors パラメータを持つ。以下に、to_numeric() を用いてオブジェクト型を float に変換する例を示します。

import pandas as pd

df = pd.DataFrame(
    [["10.0", 6, 7, 8], ["1.0", 9, 12, 14], ["5.0", 8, 10, 6]],
    columns=["a", "b", "c", "d"],
)

df["a"] = pd.to_numeric(df["a"], errors="coerce")

print(df.info())

出力:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 4 columns):
a    3 non-null float64
b    3 non-null int64
c    3 non-null int64
d    3 non-null int64
dtypes: float64(1), int64(3)
memory usage: 224.0 bytes
著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Pandas DataFrame