如何使用Pandas遍历DataFrame的行列,生成指定格式的字符串并存储到列表中
如何使用Pandas遍历DataFrame的行列,生成指定格式的字符串并存储到列表中
没问题,我来帮你搞定这个需求!先理清楚核心目标:我们要遍历DataFrame里所有非'-'且非NaN的有效单元格,生成{值}=output[{所在列名}:{目标列名}]格式的字符串,同时把这些字符串存到列表里,还要打印出来。
先来看实现步骤,每一步都给你写清楚注释:
第一步:导入库并创建DataFrame
import pandas as pd # 你的原始数据 data = {'col7': ['Apple','Banana','-','-','-','-'], 'col6': [float('NaN'),float('NaN'),'-','-','-','HA'], 'col5': [float('NaN'),float('NaN'),'-','-','-','HB'], 'col4': [float('NaN'),float('NaN'),'-','Egg','G1','HC'], 'col3': [float('NaN'),'Cat','Dog',float('NaN'),'G2','HD'], 'col2': [float('NaN'),float('NaN'),float('NaN'),float('NaN'),'G3',float('NaN')], 'col1': [float('NaN'),float('NaN'),float('NaN'),float('NaN'),'G4','HD'], 'col0': [float('NaN'),float('NaN'),float('NaN'),'Fish','G5',float('NaN')]} df = pd.DataFrame(data)
第二步:遍历行列生成目标字符串并存储
这里我按照你给出的示例,默认目标结束列是最右侧的col0,如果你需要改成该行最右侧的有效列,我也会给你标注修改方式:
# 用来存储结果的列表 output_list = [] # 遍历DataFrame的每一行 for _, row in df.iterrows(): # 筛选出当前行里的有效单元格:排除'-'和NaN valid_cells = row[(row != '-') & (~row.isna())] # 如果该行没有有效单元格,直接跳过 if valid_cells.empty: continue # -------------------------- # 这里可以调整结束列的逻辑: # 1. 按照你的示例,固定用col0作为结束列 end_col = 'col0' # 2. 如果想要用该行最右侧的有效列作为结束列,就把上面一行改成下面这行: # end_col = valid_cells.index[-1] # -------------------------- # 遍历当前行的每个有效单元格 for col_name, value in valid_cells.items(): # 生成指定格式的字符串 result_str = f"{value}=output[{col_name}:{end_col}]" # 添加到结果列表 output_list.append(result_str) # 打印字符串 print(result_str) # 最后可以查看存储的列表内容 print("\n最终存储的列表:") print(output_list)
运行结果说明
运行上面的代码后,你会得到和你示例匹配的输出:
Apple=output[col7:col0] Banana=output[col7:col0] Cat=output[col3:col0] Dog=output[col3:col0] Egg=output[col4:col0] Fish=output[col0:col0] G1=output[col4:col0] G2=output[col3:col0] G3=output[col2:col0] G4=output[col1:col0] G5=output[col0:col0] HA=output[col6:col0] HB=output[col5:col0] HC=output[col4:col0] HD=output[col3:col0] HD=output[col1:col0]
同时这些字符串都会被存在output_list里,方便后续使用。如果你的示例里Banana=output[col7:col4]是有特殊逻辑的(比如取当前列左侧第一个有效列的前一列),可以随时告诉我,我再帮你调整代码~
备注:内容来源于stack exchange,提问作者Josephine Fang
相关产品推荐
相关产品推荐

