Python for循环遍历dataframe时如何打印变量名而非变量内容
解决方案
Python中对象本身不会存储绑定的变量名,所以直接遍历DataFrame对象无法直接获取对应的变量名,两种简便实现方法如下:
方法1:手动指定变量名列表(最稳妥,无额外匹配逻辑)
只需要列出变量名的字符串列表,通过globals()从全局作用域获取对应DataFrame对象即可,不需要手动写完整的字典映射:
for df_name in ["df_1", "df_2", "df_3", "df_4"]: # 获取对应变量名的DataFrame df = globals()[df_name] # 执行自定义操作 df.RandomField.value_counts() # 直接输出变量名 print(df_name)
方法2:自动匹配符合命名规则的DataFrame(适合批量处理场景)
如果你的DataFrame都遵循统一的命名规则(比如前缀为df_),可以直接从全局变量中自动过滤符合要求的DataFrame,连变量名列表都不需要手动写:
import pandas as pd # 自动过滤所有符合df_数字命名格式的DataFrame df_name_list = [ var_name for var_name, var_value in globals().items() if var_name.startswith("df_") and var_name.split("_")[-1].isdigit() and isinstance(var_value, pd.DataFrame) ] for df_name in df_name_list: df = globals()[df_name] df.RandomField.value_counts() print(df_name)
以上两种方法均兼容Python 3.8和Jupyter Notebook环境,无需安装额外依赖。
内容的提问来源于stack exchange,提问作者user584936
相关产品推荐
相关产品推荐

