私はdfを持っています。1つの列には「状態」があり、別の列には「テキスト」があります。State Column = "Idaho"の場合にのみ、 "Text"列から "Lime"という単語を抽出する "my_new_col"という新しい列を作成したいと思います。
df = {'State': ["Idaho", "Washington","Oregon","Idaho","Oregon"], 'Text': ["Lime Light","New Egg","Lime Inc","Monteray","NovaDing"]}
df = pd.DataFrame(df)
df
出力:
State Text
0 Idaho Lime Light
1 Washington New Egg
2 Oregon Lime Inc
3 Idaho Monteray
4 Oregon NovaDing
次のようなデータフレームを取得するにはどうすればよいですか
State Text my_new_col
0 Idaho Lime Light Lime
1 Washington New Egg None
2 Oregon Lime Inc None
3 Idaho Monteray None
4 Oregon NovaDing None
別の例は、正規表現に一致するテキストを新しい列に引き出すことです。
df = {'State': ["Idaho", "Washington","Oregon","Idaho","Oregon"], 'Text': ["1,234 Light","New Egg","Lime Inc","1223 Ring","NovaDing"]}
df = pd.DataFrame(df)
df
出力:
State Text
0 Idaho 1,234 Light
1 Washington New Egg
2 Oregon Lime Inc
3 Idaho 1223 Ring
4 Oregon NovaDing
次のようなデータフレームを取得するにはどうすればよいですか。正規表現は\ d、\ d \ d \ dになります
State Text my_new_col
0 Idaho 1,234 Light 1,234
1 Washington New Egg None
2 Oregon Lime Inc None
3 Idaho 1223 Ring None
4 Oregon NovaDing None
大文字と小文字が区別される場合:
df['my_new_col'] = None
df.loc[(df['State']=='Idaho') & (df['Text'].str.contains("Lime")), 'my_new_col'] = 'Lime'
print(df)
State Text my_new_col
0 Idaho Lime Light Lime
1 Washington New Egg None
2 Oregon Lime Inc None
3 Idaho Monteray None
4 Oregon NovaDing None
大文字と小文字を区別しない場合:
df.loc[(df['State']=='Idaho') & (df['Text'].str.contains("Lime", case=False)), 'my_new_col'] = 'Lime'
... 2番目のサンプルデータフレームからの質問の更新に基づく:
df.loc[(df['State']=='Idaho'), 'my_new_col'] = df['Text'].str.extract(r"(\d,\d\d\d)")[0]
これにより、NaN
値がNone
。ではなく列に配置されます。それが重要な場合:
df['my_new_col'] = None
df.loc[(df['State']=='Idaho'), 'my_new_col'] = df['Text'].str.extract(r"(\d,\d\d\d)")[0]
df.loc[df['my_new_col'].isnull(), 'my_new_col'] = None
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加