サイトアイコン Amelt.net

Pandas:列(カラム)をreplaceしてデータ型変換を行うサンプルコード

Amelt

Amelt

This post is also available in: English-US (英語)

pandasを利用していて、数字区切りのカンマ(,)を replace() 関数で置換してデータ型変換を行うサンプルコードを、メモ代わりに書いています。

サンプルコード中のコメントにも書いていますが、replaceするSeriesのデータ型が str の場合には '.str' アクセサを利用して、floatの場合にはダイレクトに replace() を利用して置換可能です。
たまに利用すると、忘れてしまっている仕様です。

import pandas as pd

# サンプルデータ
sample_list = {'sampleA':["1,000","2,000","3,000"],
               'sampleB':["4,000","5,000","6,000"]}

# データフレーム作成
df = pd.DataFrame(sample_list)
print(df)
"""
  sampleA sampleB
0   1,000   4,000
1   2,000   5,000
2   3,000   6,000
"""

# データ型を確認
print(type(df['sampleA'][0]))
"""
<class 'str'>
"""

# データ型が str の場合 .str アクセサを利用
df['sampleA'] = df['sampleA'].str.replace(',','').astype(float)
print(df)
"""
   sampleA sampleB
0   1000.0   4,000
1   2000.0   5,000
2   3000.0   6,000
"""

# データ型がfloatの場合にはSeriesに対してダイレクトに replace() を利用
df['sampleA'] = df['sampleA'].replace(1000, 0)
print(df)
"""
   sampleA sampleB
0      0.0   4,000
1   2000.0   5,000
2   3000.0   6,000
"""