Python Pandas根据格式替换字符串

时间:2015-10-22 10:01:53

标签: python pandas

请问有没有办法用" x,x + 1,x + 2,...取代" x-y" , y" 在数据框的每一行? (其中x,y是整数)。 例如,我想替换像这样的每一行:

" 1-3,7" by" 1,2,3,7"
" 1,4,6-9,11-13,5" by" 1,4,6,7,8,9,11,12,13,5" 等

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

非常感谢

1 个答案:

答案 0 :(得分:1)

在pandas中,您可以使用apply将任何函数应用于DataFrame中的行或列。该函数可以使用lambda传递,也可以单独定义。

(旁注:如果您实际拥有2-D DataFrame或只是1-D系列,那么您的示例并不完全清楚。无论哪种方式,都可以使用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