Python pandasデータフレームの[]括弧内の指定された文字列を抽出し、ブール値を使用して新しい列を作成する方法

yusuke0426

私はプログラミングに不慣れであり、あなたの洞察のいずれかをいただければ幸いです!

私はこのようなデータフレームを持っています。

df;

            info                Price  
0   [100:Sailing]                $100
1   [150:Boating, 100:Sailing]   $200
2   [200:Surfing]                $300

情報列の情報に基づいてアクティビティ名で新しい列を作成し、情報列に対応する名前がある場合は新しい列に1を追加したいと思います。以下のデータフレームのようになります。

   Price  Sailing  Boating  Surfing
0   $100       1         0        0
1   $200       1         1        0
2   $300       0         0        1

コードブローを試しましたが、機能しませんでした。(このアプローチは他の列でも機能しますが)

df1 = df.info.str.extract(r'(Boating|Sailing|Surfing)',expand=False)
df2 = pd.concat([df,pd.get_dummies(df1).astype(int)],axis=1)

このようなデータは1万を超えるので、理想的には、情報列で指定された文字列(サーフィンなど)を自動的に抽出し、アクティビティ名で新しい列を作成して、上記のように1または0を返すコードを記述します。データの角かっこやデータフレームのデータ型が問題の原因になっているのではないかと思いましたが、どうすればよいかわかりません。

アイハン

info列の値の形式はPythonリストのようなものだと思いました。

df1 = df['info'].str[1:-1].str.replace(' ', '').str.get_dummies(',')
df1.rename(columns=lambda x: x.rsplit(':')[-1], inplace=True)
df2 = pd.concat([df, df1.astype(int)], axis=1)

df2
Out: 
                         info Price  Sailing  Boating  Surfing
0               [100:Sailing]  $100        1        0        0
1  [150:Boating, 100:Sailing]  $200        1        1        0
2               [200:Surfing]  $300        0        0        1

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ