为了账号安全,请及时绑定邮箱和手机立即绑定

pandas.Series.str.replace()基于另一个系列

pandas.Series.str.replace()基于另一个系列

收到一只叮咚 2021-05-21 18:14:56
我正在使用DataQuest指导项目(https://www.dataquest.io/m/294/guided-project%3A-exploring-ebay-car-sales-data/)中提供的二手车数据集。我提供了此问题的数据样本。我想做的是从汽车名称中删除多余的信息,例如品牌名称。品牌已经包含在数据的另一列中,并且此练习正在使用熊猫进行数据清理,因此,我想看看是否存在使用库功能替换此类子字符串的干净方法。我曾尝试将pandas Series作为pat参数传递给Series.str.replace(),但显然无法正常工作。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。在基于另一个系列的熊猫系列上执行矢量化替换的干净方法是什么?理想情况下'Peugeot_807_160_NAVTECH_ON_BOARD'将成为'_807_160_NAVTECH_ON_BOARD'依此类推。import pandas as pdautos_dict = {    'brand': ['peugeot', 'bmw', 'volkswagen', 'smart', 'chrysler'],    'name': [        'Peugeot_807_160_NAVTECH_ON_BOARD',        'BMW_740i_4_4_Liter_HAMANN_UMBAU_Mega_Optik',        'Volkswagen_Golf_1.6_United',        'Smart_smart_fortwo_coupe_softouch/F1/Klima/Panorama',        'Chrysler_Grand_Voyager_2.8_CRD_Aut.Limited_Stow´n_Go_Sitze_7Sitze'    ]}autos_df = pd.DataFrame.from_dict(autos_dict)autos_df['name'].str.replace(autos_df['brand'], '', case=False)返回以下错误消息:Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "/anaconda3/lib/python3.6/site-packages/pandas/core/strings.py", line 2429, in replace    flags=flags, regex=regex)  File "/anaconda3/lib/python3.6/site-packages/pandas/core/strings.py", line 656, in str_replace    compiled = re.compile(pat, flags=flags)  File "/anaconda3/lib/python3.6/re.py", line 233, in compile    return _compile(pattern, flags)  File "/anaconda3/lib/python3.6/re.py", line 289, in _compile    p, loc = _cache[type(pattern), pattern, flags]  File "/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py", line 1489, in __hash__    ' hashed'.format(self.__class__.__name__))TypeError: 'Series' objects are mutable, thus they cannot be hashed我可以使用原始Python进行此操作,因此,仅当您具有基于Pandas的解决方案时,请做出回应。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信