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