请问有没有办法用" 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"
等
我知道通过循环和使用正则表达式,我们可以做到这一点。但桌子很大,需要很长时间。所以我认为使用熊猫可能会更快。
非常感谢
答案 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