|
发表于 2023-5-22 14:22:05
|
显示全部楼层
本楼为最佳答案
冰菲 发表于 2023-5-22 14:15
last_data['单号'] = np.where(last_data['个数']==0,last_data['保单号+'],last_data['保单号+']+"-"+st ...
你想要的新列"新单号",需要对每一行进行操作,所以我们需要使用 apply() 函数来对每一行进行操作。以下是修改后的代码:
- import pandas as pd
- # 读取Excel文件
- df = pd.read_excel('input.xlsx')
- # 创建一个字典来跟踪每个保单号的出现次数
- count_dict = {}
- # 创建一个新列来保存出现的次数
- df['个数'] = 0
- for i in range(len(df)):
- policy_number = df.loc[i, '保单号+']
- if policy_number in count_dict:
- count_dict[policy_number] += 1
- df.loc[i, '个数'] = count_dict[policy_number]
- else:
- count_dict[policy_number] = 0
- # 添加新单号列
- df['新单号'] = df.apply(lambda row: row['保单号+'] if row['个数']==0 else row['保单号+'] + "-" + str(row['个数']), axis=1)
- # 保存到新的Excel文件中
- df.to_excel('output.xlsx', index=False)
复制代码
这段代码将对每一行应用一个函数,该函数会检查"个数"列是否为0。如果为0,它将只使用"保单号+"的值,否则,它将在"保单号+"的值后添加一个连字符和"个数"的值。
|
|