Pandas DataFrame では、次のようにして浮動小数点数を整数に変換できます。
(1) astype(int):
df["DataFrame Column"] = df["DataFrame Column"].astype(int)
(2) 適用(int):
df["DataFrame Column"] = df["DataFrame Column"].apply(int)
このガイドでは、浮動小数点数を整数に変換する 4 つのシナリオを紹介します。
- astype(int) または apply(int) を使用した特定の DataFrame 列
- すべての列のデータ型が float である DataFrame 全体
- 一部の列のデータ型が float である混合データフレーム
- 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 です。

次に、浮動小数点数を整数に変換するには、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」列のデータ型が整数であることがわかります。

あるいは、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)
整数のデータ型が取得されます。

(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 が取得されます。

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 内のすべての列が整数に変換されています。

上記の方法は、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 は次のとおりです。

次に、整数に変換する複数の列 (この例では最初の 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 列は整数に変換されています。

(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 が取得されます。

次に、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 は次のとおりです。
