sami1220
@sami1220

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

複数の文字列と数字が混同したDataFrameの文字列だけを変換したい

解決したいこと

DataFrameのカラム内の要素を置き換えてstr→intに変換したい

内容
・文字列だけ0に置き換える
・置き換え後、str→int型に変換

※規則性のある文字列の場合、dictを作りreplace(dict)で変換しておりましたが、
不特定な文字列が多く含まれた場合、その数のdictを作るわけにもいかないので、良い変換方法があれば教えていただきたいです。

発生している問題

このようなDataFrameのpriceのカラムを、

company | price
ーーーーーーーーーー
A株式会社 |	100
A株式会社 |	120
A株式会社 |	無料
B株式会社 |	2000
・
・
・
B株式会社 |	200
C株式会社 |	先払い

以下のように変換したい。

company | price
ーーーーーーーーーー
A株式会社 |	100
A株式会社 |	120
A株式会社 |	0
B株式会社 |	2000
・
・
・
B株式会社 |	200
C株式会社 |	0
0

2Answer

intでなければ0を返す関数を作り、mapで適用するのはいかがでしょうか?

def convert_int(s):
    try:
        int(s)
    except ValueError:
        return 0
    else:
        return int(s)

df['price'] = df['price'].map(convert_int)

image.png

1Like

このような記法があったのですね〜!
無事に期待通りに変換できました。
ご丁寧にありがとうございました。

0Like

Your answer might help someone💌