Pandas DataFrameで文字列を浮動小数点数に変換する2つの方法を紹介します。

(1) astype(float)

df["DataFrame Column"] = df["DataFrame Column"].astype(float)

(2) apply(float)

df["DataFrame Column"] = df["DataFrame Column"].apply(float)

Pandas DataFrame で文字列を浮動小数点数に変換するシナリオ

シナリオ1: 文字列として保存された数値

簡単にするために、「Price」列に文字列として保存された数値が含まれる DataFrame を作成しましょう。

import pandas as pd

data = {
    "Product": ["aaa", "bbb", "ccc", "ddd", "eee"],
    "Price": ["250", "270", "350", "400", "550"],
}

df = pd.DataFrame(data)

print(df)
print(df.dtypes)

Python でコードを実行すると、「Price」列のデータ型がオブジェクトであることがわかります。

Pandas DataFrame で文字列を浮動小数点数に変換する 1

目標は、「price」列の値を浮動小数点数に変換することです。

次に、astype(float) アプローチを使用して float への変換を実行できます。

df["DataFrame Column"] = df["DataFrame Column"].astype(float)

この例では、「DataFrame 列」は「Price」列です。したがって、値を浮動小数点数に変換する完全なコードは以下のようになります。

import pandas as pd

data = {
    "Product": ["aaa", "bbb", "ccc", "ddd", "eee"],
    "Price": ["250", "270", "350", "400", "550"],
}

df = pd.DataFrame(data)

df["Price"] = df["Price"].astype(float)

print(df)
print(df.dtypes)

「Price」列が float に変換されていることがわかります。

Pandas DataFrame で文字列を浮動小数点数に変換する 2

apply(float) を使用すると同じ結果が得られます。

import pandas as pd

data = {
    "Product": ["aaa", "bbb", "ccc", "ddd", "eee"],
    "Price": ["250", "270", "350", "400", "550"],
}

df = pd.DataFrame(data)

df["Price"] = df["Price"].apply(float)

print(df)
print(df.dtypes)

結果:

Pandas DataFrame で文字列を浮動小数点数に変換する 3

シナリオ2: データフレーム全体の文字列を浮動小数点数に変換する

2 番目のシナリオでは、すべての値が文字列として保存される 3 つの列を持つ DataFrame を作成します。

import pandas as pd

data = {
    "Price_1": ["300", "750", "600", "770", "920"],
    "Price_2": ["250", "270", "950", "580", "410"],
    "Price_3": ["530", "480", "420", "290", "830"],
}

df = pd.DataFrame(data)

print(df)
print(df.dtypes)

ご覧のとおり、DataFrame 全体のすべての列のデータ型はオブジェクトです。

Pandas DataFrame で文字列を浮動小数点数に変換する 4

次に、次の構文を追加して、DataFrame 全体のすべての値を float に変換できます。

df = df.astype(float)

したがって、変換を実行するための完全な Python コードは次のようになります。

import pandas as pd

data = {
    "Price_1": ["300", "750", "600", "770", "920"],
    "Price_2": ["250", "270", "950", "580", "410"],
    "Price_3": ["530", "480", "420", "290", "830"],
}

df = pd.DataFrame(data)
df = df.astype(float)

print(df)
print(df.dtypes)

DataFrame 全体の下のすべての列が float になりました。

Pandas DataFrame で文字列を浮動小数点数に変換する 5