email |
aaa@xxx.com |
bbb@yyy.co.jp |
ccc@zzz.ne.jp |
上のようなデータフレームから、下のようなデータフレームを作りたい
email |
user |
domain |
aaa@xxx.com |
aaa |
xxx.com |
bbb@yyy.co.jp |
bbb |
yyy.co.jp |
ccc@zzz.ne.jp |
ccc |
zzz.ne.jp |
1. 特定文字列で分割
temp = df["email"].str.split("@")
print(temp)
# 0 [aaa, xxx.com]
# 1 [bbb, yyy.co.jp]
# 2 [ccc, zzz.ne.jp]
# Name: email, dtype: object
2. 分割結果をデータフレームに拡張
temp = df["email"].str.split("@", expand=True)
print(temp)
# 0 1
# 0 aaa xxx.com
# 1 bbb yyy.co.jp
# 2 ccc zzz.ne.jp
3. 列名設定
temp = df["email"].str.split("@", expand=True).set_axis(["user", "domain"], axis=1)
print(temp)
# user domain
# 0 aaa xxx.com
# 1 bbb yyy.co.jp
# 2 ccc zzz.ne.jp
4. 元のデータフレームに結合
result = pd.concat([df, df["email"].str.split("@", expand=True).set_axis(["user", "domain"], axis=1)], axis=1)
print(result)
# email user domain
# 0 aaa@xxx.com aaa xxx.com
# 1 bbb@yyy.co.jp bbb yyy.co.jp
# 2 ccc@zzz.ne.jp ccc zzz.ne.jp