【问题标题】:Change Specific Word in Pandas更改 Pandas 中的特定单词
【发布时间】:2022-11-24 12:55:35
【问题描述】:

我有一个数据框

city = pd.DataFrame({'id': [1,2,3,4],
                        'city': ['NRTH CAROLINA','NEW WST AMSTERDAM','EAST TOKYO','LONDON STH']})

如何将 NORTH 更改为 NORTH,将 WEST 更改为 WES​​T,将 STH 更改为 SOUTH,以便输出如下所示

id   city
1    NORTH CAROLINA
2    NEW WEST AMSTERDAM
3    EAST TOKYO
4    LONDON STH

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    让我们先定义一个替换字典,然后使用Series.replace(regex=True) 替换为字典键的词边界。

    import re
    
    d = {
        'NRTH': 'NORTH',
        'WST': 'WEST',
        'STH': 'SOUTH'
    }
    
    
    df['city'] = df['city'].replace({rf"{re.escape(k)}":v for k, v in d.items()}, regex=True)
    
    print(df)
    
       id                city
    0   1      NORTH CAROLINA
    1   2  NEW WEST AMSTERDAM
    2   3          EAST TOKYO
    3   4        LONDON SOUTH
    

    【讨论】:

      【解决方案2】:

      你好,亚瑟! 我已经定义了 mapping_dict,您可以在其中定义您想要更改的任何其他词。

      为了改变它们,我制作了一个单独的函数来映射城市名称。

      import pandas as pd
      city = pd.DataFrame({'id': [1,2,3,4],
                              'city': ['NRTH CAROLINA','NEW WST AMSTERDAM','EAST TOKYO','LONDON STH']})
      mapping_dict = {'NRTH':'NORTH','WST':'WEST','STH':'SOUTH'}
      def mapping_words(city_name):
          updated_name = ""
          for word in city_name.split():
              if word in mapping:
                  updated_name += mapping[word]+" "
              else:
                  updated_name += word+" "
          return updated_name.strip()
      
      city['city'] = city['city'].apply(lambda x: mapping_words(x))
      

      我希望这可以帮助你。 谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-28
        • 2021-12-01
        • 2013-11-03
        • 1970-01-01
        • 2017-06-19
        • 2016-06-13
        • 2013-01-02
        相关资源
        最近更新 更多