【问题标题】:Function to remove a part of a string before a capital letter in Pandas Series在 Pandas 系列中删除大写字母前字符串的一部分的函数
【发布时间】:2022-11-26 00:06:36
【问题描述】:

我有一个数据框,其中包含一列 ['locality_name'],其中包含村庄、城镇、城市的名称。有些名字写成“汉密尔顿镇”,有些像“汉密尔顿”,有些像“汉密尔顿市”等。因此,很难计算唯一值等。我的目标是只留下名字。

我想编写一个函数,删除字符串的一部分直到大写字母,然后将其应用于我的数据框。

那就是我试过的:

重新进口

def my_slicer(行): """ 返回带有地区名称的字符串 """ return re.sub('ABCDEFGHIKLMNOPQRSTVXYZ','', row['locality_name'])

raw_data['locality_name_only'] = raw_data.apply(my_slicer, axis=1)

我希望它返回一个包含地名的新列。相反,没有任何改变 - ['locality_name_only'] 与 ['locality_name'] 具有相同的值。

【问题讨论】:

    标签: python pandas python-re


    【解决方案1】:

    您可以使用pandas.Series.str.extract。例如:

    ser = pd.Series(["town of Hamilton", "Hamilton", "city of Hamilton"])
    ser_2= ser.str.extract("([A-Z][a-z]+)")
    

    在你的情况下,使用:

    raw_data['locality_name_only'] = raw_data['locality_name'].str.extract("([A-Z][a-z]+)")
    

    # 输出 :

    print(ser_2)
    
              0
    0  Hamilton
    1  Hamilton
    2  Hamilton
    

    【讨论】:

      猜你喜欢
      • 2016-10-16
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 2016-04-23
      • 2019-05-29
      • 1970-01-01
      相关资源
      最近更新 更多