您的代码存在一些错误,下面是已修正的代码:

import pandas as pd

def convert_format(num_list):
    res = ''
    for i in range(len(num_list)):
        num_str = str(num_list[i]).zfill(4)  # 将数字转化为4位字符串
        if i == 0:
            res += num_str
        else:
            prev_str = str(num_list[i-1]).zfill(4)
            if num_str[:2] == prev_str[:2]:
                res += '-' + num_str[2:]
            else:
                res += '/' + num_str
    return res

df = pd.DataFrame({'all': ['1081-1091-1001-0483-0421', '611-613-639-839-837-833', '23-611-613-639', '23-611-613-639-993', '483-421'],
                   't': [1, 1, 1, 2, 0]})

df["B"] = df["all"].apply(lambda x: convert_format(x.split('-')))  # 将all列中的字符串按照-分割成列表,并传入convert_format函数进行转换

print(df)

主要修改如下:

  1. 在apply函数中,需要将字符串按照-分割成列表,并将列表传入convert_format函数进行转换。

  2. 函数convert_format中,参数num_list应该是一个列表,而不是字符串。因此需要在apply函数中进行转换。

  3. 在apply函数中使用了lambda表达式来定义匿名函数,而不是使用lamda表达式。

  4. 修改了缩进问题。

希望可以帮到您

def convert_formatnum_list res = for i in rangelennum_list num_str = strnum_listizfill4 # 将数字转化为4位字符串 if i == 0 res += num_str else prev_str = strnum

原文地址: https://www.cveoy.top/t/topic/fa9s 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录