如何在Pandas中遍历DataFrame列表并打印名称及前2行数据
解决Pandas遍历DataFrame列表并打印名称与前2行的问题
问题核心
你创建的dflist = [df1, df2, df3, df4]里存储的是DataFrame对象本身,不是df1这类变量名称字符串,这是和Unix命令的本质区别——Unix处理的是文件名字符串,而Python列表里存的是实际数据对象,直接遍历拿不到变量名。
解决方案
方法1:用元组列表绑定名称与DataFrame
先把每个DataFrame和它的名称配对存储,再遍历打印:
# 构建名称与DataFrame的配对列表 df_with_names = [("df1", df1), ("df2", df2), ("df3", df3), ("df4", df4)] # 遍历打印每个DataFrame的名称和前2行 for name, df in df_with_names: print(name) print(df.head(2)) print("-" * 30) # 分隔不同结果,提升可读性
方法2:用字典存储(更直观)
用字典的键存名称,值存DataFrame,遍历键值对即可:
# 构建字典 df_dict = { "df1": df1, "df2": df2, "df3": df3, "df4": df4 } # 遍历打印 for name, df in df_dict.items(): print(name) print(df.head(2)) print("-" * 30)
补充:如果是从文件读取的DataFrame
如果你的DataFrame是从CSV等文件读取的,可以直接把文件名作为标识:
import pandas as pd # 定义要读取的文件列表 file_list = ["US_distribution_of_soybean_aphid_2022.csv", ...] # 替换为你的实际文件名 df_dict = {} # 读取文件并存储到字典 for file_name in file_list: df_dict[file_name] = pd.read_csv(file_name) # 遍历打印 for file_name, df in df_dict.items(): print(file_name) print(df.head(2)) print("-" * 30)
为什么之前的代码不符合预期
print('i')会打印字符串字面量i,而不是变量代表的DataFrame名称;print(i)会直接输出整个DataFrame对象的内容,想要只显示前2行必须用df.head(2)。
内容的提问来源于stack exchange,提问作者Sara Oppenheim
相关产品推荐
相关产品推荐

