Python基于格式替换字符串

Python基于格式替换字符串,python,pandas,Python,Pandas,请问,在数据框中的每一行中,是否有任何方法将“x-y”替换为“x,x+1,x+2,…,y”?(其中x,y为整数)。 例如,我想替换每一行,如下所示: “1-3,7”由“1,2,3,7”改为“1-3,7” “1,4,6-9,11-13,5”改为“1,4,6,7,8,9,11,12,13,5” 等 我知道通过循环行和使用正则表达式,我们可以做到这一点。但是这张桌子相当大,需要相当长的时间。所以我认为使用熊猫可能会更快 非常感谢pandas,您可以使用它将任何函数应用于数据帧中的行或列。函数可以通过l

请问,在数据框中的每一行中,是否有任何方法将“x-y”替换为“x,x+1,x+2,…,y”?(其中x,y为整数)。 例如,我想替换每一行,如下所示:

“1-3,7”由“1,2,3,7”改为“1-3,7”
“1,4,6-9,11-13,5”改为“1,4,6,7,8,9,11,12,13,5” 等

我知道通过循环行和使用正则表达式,我们可以做到这一点。但是这张桌子相当大,需要相当长的时间。所以我认为使用熊猫可能会更快

非常感谢pandas,您可以使用它将任何函数应用于数据帧中的行或列。函数可以通过lambda传递,也可以单独定义

(旁注:您的示例并不完全清楚您实际上是有一个二维数据帧还是只有一个一维序列。无论哪种方式,都可以使用
apply

下一步是找到正确的函数。下面是一个粗略的版本(没有正则表达式):

def make_list(str):
    lst = str.split(',')
    newlst = []
    for i in lst:
        if "-" in i:
            newlst.extend(range(*[int(j) for j in i.split("-")]))
        else:
            newlst.append(int(i))
    return newlst