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
您的代码存在一些错误,下面是已修正的代码:
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)
主要修改如下:
-
在apply函数中,需要将字符串按照-分割成列表,并将列表传入convert_format函数进行转换。
-
函数convert_format中,参数num_list应该是一个列表,而不是字符串。因此需要在apply函数中进行转换。
-
在apply函数中使用了lambda表达式来定义匿名函数,而不是使用lamda表达式。
-
修改了缩进问题。
希望可以帮到您
原文地址: https://www.cveoy.top/t/topic/fa9s 著作权归作者所有。请勿转载和采集!