Pandas DataFrame では、次のようにして浮動小数点数を整数に変換できます。

(1) astype(int):

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

(2) 適用(int):

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

このガイドでは、浮動小数点数を整数に変換する 4 つのシナリオを紹介します。

  1. astype(int) または apply(int) を使用した特定の DataFrame 列
  2. すべての列のデータ型が float である DataFrame 全体
  3. 一部の列のデータ型が float である混合データフレーム
  4. NaN値を含むDataFrame

Pandas DataFrame で浮動小数点数を整数に変換する 4 つのシナリオ

(1)特定のデータフレーム列の浮動小数点数を整数に変換する

簡単な例から始めるために、次の 2 つの列を持つ DataFrame を作成しましょう。

  • 最初の列(「numeric_values」と呼ばれる)には浮動小数点数のみが含まれます
  • 2番目の列(「string_values」)には文字列のみが含まれます

目標は、最初の DataFrame 列の下にあるすべての浮動小数点数を整数に変換することです。

DataFrame を作成するコードは次のとおりです。

import pandas as pd

data = {
    "numeric_values": [3.0, 5.0, 7.0, 15.995, 225.12],
    "string_values": ["AA", "BB", "CCC", "DD", "EEEE"],
}
df = pd.DataFrame(data)


print(df)
print(df.dtypes)

ご覧のとおり、「numeric_values」列のデータ型は float です。

Pandas DataFrame で浮動小数点数を整数に変換する 1

次に、浮動小数点数を整数に変換するには、astype(int) を使用します。

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

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

import pandas as pd

data = {
    "numeric_values": [3.0, 5.0, 7.0, 15.995, 225.12],
    "string_values": ["AA", "BB", "CCC", "DD", "EEEE"],
}
df = pd.DataFrame(data)

df["numeric_values"] = df["numeric_values"].astype(int)

print(df)
print(df.dtypes)

ここで、「numeric_values」列のデータ型が整数であることがわかります。

Pandas DataFrame で浮動小数点数を整数に変換する 2

あるいは、apply(int) を使用して浮動小数点数を整数に変換することもできます。

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

私たちの例:

import pandas as pd

data = {
    "numeric_values": [3.0, 5.0, 7.0, 15.995, 225.12],
    "string_values": ["AA", "BB", "CCC", "DD", "EEEE"],
}
df = pd.DataFrame(data)

df["numeric_values"] = df["numeric_values"].apply(int)

print(df)
print(df.dtypes)

整数のデータ型が取得されます。

Pandas DataFrame で浮動小数点数を整数に変換する 3

(2)すべての列のデータ型がfloatであるDataFrame全体を変換する

すべての列のデータ型が float である DataFrame がある場合はどうなるでしょうか?

列ごとに整数への変換を指定する代わりに、次のようにして DataFrame レベルで実行できます。

df = df.astype(int)

たとえば、float のみを含む 2 つの列を持つ新しい DataFrame を作成しましょう。

import pandas as pd

data = {
    "numeric_values_1": [3.2, 5.9, 7.0, 15.995, 225.12],
    "numeric_values_2": [7.7, 23.0, 522.0, 4275.5, 22.3],
}
df = pd.DataFrame(data)

print(df)
print(df.dtypes)

これで、2 つの float 列を持つ次の DataFrame が取得されます。

Pandas DataFrame で浮動小数点数を整数に変換する 4

DataFrame 全体で浮動小数点数を整数に変換するには、コードに df = df.astype(int) を追加する必要があります。

import pandas as pd

data = {
    "numeric_values_1": [3.2, 5.9, 7.0, 15.995, 225.12],
    "numeric_values_2": [7.7, 23.0, 522.0, 4275.5, 22.3],
}
df = pd.DataFrame(data)

df = df.astype(int)

print(df)
print(df.dtypes)

ご覧のとおり、DataFrame 内のすべての列が整数に変換されています。

Pandas DataFrame で浮動小数点数を整数に変換する 5

上記の方法は、DataFrame 内のすべての列のデータ型が float である場合にのみ機能することに注意してください。

一部の列 (すべてではない) のデータ型が float である混合 DataFrame がある場合はどうなるでしょうか?

以下のセクションではこのシナリオについて説明します。

(3) 一部の列のデータ型がfloatである混合データフレームを変換する

ここで、最初の 2 列に float 値が含まれ、3 列目には文字列のみが含まれる、3 列の新しい DataFrame を作成しましょう。

import pandas as pd

data = {
    "numeric_values_1": [3.2, 5.9, 7.0, 15.995, 225.12],
    "numeric_values_2": [7.7, 23.0, 522.0, 4275.5, 22.3],
    "string_values": ["AA", "BB", "CCC", "DD", "EEEE"],
}
df = pd.DataFrame(data)

print(df)
print(df.dtypes)

取得する 3 つの列を含む DataFrame は次のとおりです。

Pandas DataFrame で浮動小数点数を整数に変換する 6

次に、整数に変換する複数の列 (この例では最初の 2 つの列) を指定できます。

import pandas as pd

data = {
    "numeric_values_1": [3.2, 5.9, 7.0, 15.995, 225.12],
    "numeric_values_2": [7.7, 23.0, 522.0, 4275.5, 22.3],
    "string_values": ["AA", "BB", "CCC", "DD", "EEEE"],
}
df = pd.DataFrame(data)

df[["numeric_values_1", "numeric_values_2"]] = df[
    ["numeric_values_1", "numeric_values_2"]
].astype(int)

print(df)
print(df.dtypes)

ご覧のとおり、最初の 2 列は整数に変換されています。

Pandas DataFrame で浮動小数点数を整数に変換する 7

(4) DataFrameをNaN値を含む整数に変換する

最後のシナリオでは、浮動小数点数とNaN値が混在する列を変換する方法を説明します。

目標は、浮動小数点値を整数に変換し、NaN 値をゼロに置き換えることです。

DataFrame を作成するコードは次のとおりです。

import pandas as pd
import numpy as np

data = {"numeric_values": [3.0, 5.0, np.nan, 15.0, np.nan]}
df = pd.DataFrame(data)

print(df)
print(df.dtypes)

float と NaN の両方を含む次の DataFrame が取得されます。

Pandas DataFrame で浮動小数点数を整数に変換する 8

次に、fillna(0) を追加して NaN 値をゼロに置き換え、astype(int) を使用して整数への変換を実行できます。

import pandas as pd
import numpy as np

data = {"numeric_values": [3.0, 5.0, np.nan, 15.0, np.nan]}
df = pd.DataFrame(data)

df["numeric_values"] = df["numeric_values"].fillna(0).astype(int)

print(df)
print(df.dtypes)

新しく変換された DataFrame は次のとおりです。

Pandas DataFrame で浮動小数点数を整数に変換する 9