用唯一值替换字符串

Replace string with unique value

我正在处理一个数据集,其中一列 'PARNO' 的值以“/”分隔。

例如,9644-54-3184/5544/2583。实际上这相当于 9644-54-3184、9644-54-5544、9644-54-2583。

如果这是唯一的一列,我可以做一个简单的 .str.replace,但还有其他行采用这种格式,其中 PARNO 的开头不同于“9644-54-”

数据集示例如下,我的所有代码也在下面,包括我为清除其他列值而编写的代码。

import geopandas as gpd
import pandas as pd 
import numpy as np

lc_subs['PARNO'] = lc_subs['PARNO'].str.replace('-','').str.replace('(','').str.replace(')','').str.replace(r'[A-Z]', '').str.replace(r'[a-z]', '').str.replace('.','').str.replace('#','')

lc_subs = (lc_subs.set_index(lc_subs.columns.drop('PARNO',1).tolist())
   .PARNO.str.split(',|;|&', expand=True)
   .stack()
   .reset_index()
   .rename(columns={0:'PARNO'})
   .loc[:, lc_subs.columns]
)

有没有办法用该行的前 6 位数字替换“/”?

最终目标是每行有一个数字,没有文本或符号,因此我可以在 PARNO 列上进行空间连接。

感谢您的帮助!

为什么不使用辅助函数来扩展后缀?

strings = [
    '9644-54-3184/5544/2583',
    'foo-bar-234/5423/12'
]

def expandsuffix(string: str) -> str:

    prefix, suffixes = string.rsplit('-', maxsplit=1)
    return ', '.join('-'.join((prefix, suffix)) for suffix in suffixes.split('/'))
      
        
        
if __name__ == '__main__':
    for string in strings:
        print(expandsuffix(string))

这是从前缀复制号码扩展的简单方法:

def expand(s):
    return s.replace("/",f",{s.rsplit('-',1)[0]}-").split(",")

print(expand("9644-54-3184/5544/2583"))

# ['9644-54-3184', '9644-54-5544', '9644-54-2583']

它的工作原理是用逗号和通用前缀替换“/”字符。然后在逗号上拆分。

所以你得到:

'9644-54-3184/5544/2583' --> '9644-54-3184,9644-54-5544,9644-54-2583'

然后拆分(在逗号上)作为扩展数字列表:

['9644-54-3184', '9644-54-5544', '9644-54-2583']

请注意,如果您的字符串可以包含逗号,您可以使用任何其他字符作为临时分隔符(例如“\n”)