私はプログラミングに不慣れであり、あなたの洞察のいずれかをいただければ幸いです!
私はこのようなデータフレームを持っています。
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]
コメントを追加