日付と会社名の2つの変数が格納されているこの1つの列があります。私の目標は、これら2つの変数を2つの列に分けることです。
date_time/full_company_name
- 2020-05-19ロペス-ウォレス
- 2020-05-12スミス-サイモン
- 2020-10-02Jenkins Inc
- 2020-07-06ムーア-ワイス
これまでの私のアプローチは次のとおりです。
df['date_time'] = [i[:10] for i in df['date_time/full_company_name']]
df['full_company_name'] = [i[10:] for i in df['date_time/full_company_name']]
df.drop('date_time/full_company_name', axis=1, inplace=True)
上記のコードはうまく機能しましたが、データセットには次のような失敗したデータエントリがいくつかあります。
- 0ロペス、バートン、ジョーンズ
- NaNBrown、Singleton、Harrell
- 84635ボールトーマス
例外を処理するために一連のifステートメントを含むループを使用したり、文字列に何らかの区切り文字を挿入してから使用したりするなど、いくつかの可能な解決策について考えました。
string.split('_')
。ただし、これらの回避策はかなり面倒です。
もっと一般的な関数やメソッドがそこにあるのだろうかと思わずにはいられません。
一般に、パンダシリーズまたはデータフレームのコンテンツを反復処理するとパフォーマンスが低下します。代わりに、可能な場合はベクトル化されたアプローチをお勧めします。
ドキュメントを参照してください。
そうは言っても、「失敗していない」エントリの場合は、次のようにすることができます。
失敗したエントリの場合、一貫したパターンがない場合、プログラムによるアプローチを思い付くのは難しいでしょうが、あなたの例で機能し、他の既知のエントリエラーで拡張できるものが使用されています
extract
正規表現で:出力: