如何从Pandas DataFrame中按文件名提取x_c、y_c列生成独立DataFrame
实现方案
假设你的原始DataFrame命名为raw_df,存储文件名的列名为filename,如果实际列名不同,替换代码中对应位置的字符串即可。
方法1:字典存储(更推荐,易批量维护)
不需要动态生成独立变量,后续调用更灵活:
import pandas as pd # 生成目标文件名列表(0000到0036共37个文件) target_files = [f"recon_image_{i:04d}.tif" for i in range(37)] # 过滤有效数据,按文件名分组,仅保留x_c、y_c两列 grouped = raw_df[raw_df['filename'].isin(target_files)].groupby('filename')[['x_c', 'y_c']] # 生成 文件名:子DataFrame 格式的字典 df_dict = {file: group.reset_index(drop=True) for file, group in grouped} # 如需生成df1~df37的独立变量,添加以下代码即可 for idx in range(37): globals()[f'df{idx+1}'] = df_dict[f"recon_image_{idx:04d}.tif"]
方法2:直接生成独立变量
不需要字典存储,直接生成对应编号的DataFrame:
for idx in range(37): current_file = f"recon_image_{idx:04d}.tif" globals()[f'df{idx+1}'] = raw_df[raw_df['filename'] == current_file][['x_c', 'y_c']].reset_index(drop=True)
注意事项
reset_index(drop=True)用于清空子DataFrame继承的原始索引,如需保留原始索引可删除该部分- 当前编号规则为
df1对应recon_image_0000.tif,df2对应recon_image_0001.tif,以此类推。如果需要编号和文件名的数字完全对齐,把代码中的df{idx+1}改为df{idx}即可 - 如果原始数据中不存在某个目标文件,对应生成的DataFrame为空,可通过
df1.empty判断是否有有效数据
内容的提问来源于stack exchange,提问作者Minwoo Kang
相关产品推荐
相关产品推荐

