ITいろいろ

プログラミングやクラウド、データ解析など、ITにかかわることをいろいろと書いています。

astypeで数値型を文字列型に変換

前回紹介したstr関数(contains startswith endwith matchなど)は、文字列型にしか使えません。

Pandasでread_excelread_csvなどをすると自動的に型を割り当ててくれるので、便利ではあるのですが数値型にも上記の関数を使い時もあります。

その方法をお伝えします。

コード紹介

# インポート
import pandas as pd

# 列の最大表示数を7に設定
pd.set_option('display.max_columns', 7)
# 列の最大表示数を5に設定
pd.set_option('display.max_rows', 5)

# ファイルの取り込み
df = pd.read_excel("05k2-3.xlsx", skiprows=3, skipfooter=3)

print('【すべてのデータを表示】')
print(df)

df_contain = df[df['男'].astype(str).str.startswith('22')]
print('\n\n【男が「22」から始まるものを表示】')
print(df_contain)

出力結果

少し解説

df['男'] で列名「男」の中身を取り出します。

そのあとに.astype(str)を入れることで、文字列型に変換します。 よく使うものは以下です。

  • str: 文字列
  • int: 整数(int32で扱う)
  • float: 浮動小数点(float64で扱う)

その後にstr関数を使い、文字列のフィルタをかけています。 (この場合だと22から始まるもの)

ちなみにprintに書いている\nは改行の意味です。