0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

部分一致したものに数値を代入する方法(備忘録①)

Posted at

使用データ

# 使用データ
df
name room_type
0 ホテルA スーペリアツインルーム禁煙
1 ホテルB スーペリアツインルーム喫煙
2 ホテルC デラックスツインルーム
3 ホテルD スタンダードツインルーム禁煙
4 ホテルE ダブルルーム
5 ホテルF デラックスダブルルーム禁煙
6 ホテルG スタンダードツインルーム禁煙
7 ホテルH デラックスキングルーム

このようなものを用意しました。

Goal

room_typeに'スーペリア'、'デラックス'と名前がつくものに1、そうでないものに0を付与した新しいカラムを生成する。

実施事項

new_room_type_list = []

for i in range(8):
    if 'スーペリア' in df['room_type'][i]:
        a = 1
    elif 'デラックス' in df['room_type'][i]:
        a = 1
    else:
        a = 0
    new_room_type_list.append(a)

このようにしてlistを作成
その後dfに追加する。

# dfに作成したnew_room_type_listをdf['new_room_type']として追加する。
df['new_room_type'] = new_room_type_list

確認してみる

df
name room_type new_room_type
0 ホテルA スーペリアツインルーム禁煙 1
1 ホテルB スーペリアツインルーム喫煙 1
2 ホテルC デラックスツインルーム 1
3 ホテルD スタンダードツインルーム禁煙 0
4 ホテルE ダブルルーム 0
5 ホテルF デラックスダブルルーム禁煙 1
6 ホテルG スタンダードツインルーム禁煙 0
7 ホテルH デラックスキングルーム 1

こんな感じでうまく追加することができた。

おまけ:.str.contains()の使用

df['room_type'].str.contains('スーペリア')

0 True
1 True
2 False
3 False
4 False
5 False
6 False
7 False
Name: room_type, dtype: bool

このようにどの行に'スーペリア'が出てくるなどはわかるが、.str.contains()はDataFrame全体に及ぶものなので1行1行をみていくif文などには向かないと判断したため上記の方法を用いた

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?