如何创建名称包含用户输入的输出DataFrame?
动态命名包含用户输入的DataFrame的实现方法
当然可行,但不建议直接创建动态命名的变量——这会让代码难以维护,还容易引发命名冲突。更稳妥的方式是用字典存储这些DataFrame,既能实现“动态命名”的需求,又方便管理。
推荐方案:用字典存储DataFrame
把DataFrame作为值存入字典,用你想要的动态字符串作为键,后续分析时通过键就能快速定位对应的DataFrame:
start_year = int(input("Enter a start year:")) end_year = int(input("Enter an end year:")) selected_jur = input("Enter a jurisdiction number to search for: ") df_list=[] df_dict ={} # 假设这里已完成数据过滤,得到combined_df # ...(你的数据处理代码) # 生成动态键名 df_key = f"combined_df_for_{selected_jur}_from_{start_year}_to_{end_year}" # 将DataFrame存入字典 df_dict[df_key] = combined_df # 后续调用示例 print(f"Combined dataframe of {selected_jur} from {start_year} to {end_year}:") print(df_dict[df_key])
这种方法的优势在于:所有动态生成的DataFrame都集中在字典中,方便遍历、查找,不会污染全局变量空间。
不推荐方案:动态创建全局变量
如果非要直接生成以动态字符串命名的变量,可以用globals()函数实现,但强烈不建议在生产代码中这么做:
# 生成动态变量名 df_name = f"combined_df_for_{selected_jur}_from_{start_year}_to_{end_year}" # 将DataFrame赋值给全局变量 globals()[df_name] = combined_df # 后续调用示例 print(f"Combined dataframe of {selected_jur} from {start_year} to {end_year}:") print(globals()[df_name])
这种方式的问题很明显:变量名是动态生成的,IDE无法自动补全,代码可读性差,还可能不小心覆盖已有全局变量,导致难以排查的bug。
内容的提问来源于stack exchange,提问作者PRuss
相关产品推荐
相关产品推荐

