Pandas函数仅修改DataFrame第一列,第二列无变更问题排查
问题原因与解决方法
问题出在return df的缩进位置——它被放在了try代码块内部、for循环的迭代过程里。这就导致函数在处理完第一列(DR_NDrugs)后,直接返回了修改后的DataFrame,for循环根本没机会执行到第二列(DR_TDoc)的处理逻辑。
修正后的代码如下:
import pandas as pd import numpy as np # 补充导入numpy,原代码使用了np但未声明 def new_func(folder, file, types, folder1_changes: tuple): df = pd.read_csv(folder + '/' + file, encoding='1251').astype(types) for (i, j) in folder1_changes: try: product_names_list = list(df[i].unique()) products_arr = np.array(range(1, len(product_names_list)+1)) product_names_map = {} for a, p in zip(products_arr, product_names_list): product_names_map[p] = f'{j}{a}' df[i] = df[i].map(product_names_map) except KeyError: continue # 将return移至for循环外部,确保所有列处理完成后再返回 return df
修正后,函数会遍历folder1_changes中的所有列对,完成所有列的映射修改后,再返回最终的DataFrame,第二列DR_TDoc就能正常被修改了。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

