前提・実現したいこと
python初めて4ヶ月の初心者です。
pandasでの正規表現についてわからないことがあるので教えて下さい。
こちらのデータフレームでrireki列の日付だけをとってrireki2の列を作りたいのですが
matchでやると、
0 <re.Match object; span=(0, 8), match='2021/1/1'>
1 <re.Match object; span=(0, 8), match='2021/1/1'>
2 <re.Match object; span=(0, 8), match='2021/1/1'>
Name: rireki2, dtype: object
になり、欲しい日付が抽出できません。
できる方法があればご教示お願いします。
該当のソースコード
python
1import pandas as pd 2import re 3list1=["2021/1/1hogehoge","2021/1/1(hoge)","2021/1/1(hoge)"] 4columns1 = "rireki" 5df2 = pd.DataFrame(data=list1) 6df2["rireki2"] = [re.match(r"^\d+/\d+/\d",value) for value in df2.rireki] 7df2["rireki2"].group() 8 9エラー: 10--------------------------------------------------------------------------- 11AttributeError Traceback (most recent call last) 12<ipython-input-40-c7525894ec4e> in <module> 13----> 1 df2["rireki2"].group() 14 15~/opt/anaconda3/lib/python3.8/site-packages/pandas/core/generic.py in __getattr__(self, name) 16 5137 if self._info_axis._can_hold_identifiers_and_holds_name(name): 17 5138 return self[name] 18-> 5139 return object.__getattribute__(self, name) 19 5140 20 5141 def __setattr__(self, name: str, value) -> None: 21 22AttributeError: 'Series' object has no attribute 'group' 23 24 25
試したこと
雑なやり方としては
①findallでリストにして、そこから文字列にするなどです。
df2["rireki2"] = [re.findall(r"^\d+/\d+/\d",value) for value in df2.rireki]
df2["rireki2"] = ["".join(value) for value in df2.rireki2]
です。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/10 10:55