用一系列值替换数据框中的单元格

时间:2020-05-22 08:26:18

标签: python pandas

我有一个大型数据框,其中包含某些单元格,其值类似于:<25-27>。是否有一种简单的方法可以将它们转换为类似:25 | 26 | 27?

源数据框:

import pandas as pd
import numpy as np

f = {'function':['2','<25-27>','200'],'CP':['<31-33>','210','4001']}
filter = pd.DataFrame(data=f)
filter

需要输出

output = {'function':['2','25|26|27','200'],'CP':['31|32|33','210','4001']}
op = pd.DataFrame(data=output)
op

非常感谢!

1 个答案:

答案 0 :(得分:2)

import re
def convert_range(x):
    m = re.match("<([0-9]+)+\-([0-9]+)>", x)
    if m is None:
       return x
    s1, s2 = m.groups()
    return "|".join([str(s) for s in range(int(s1), int(s2)+1)])
op = filter.applymap(convert_range)