You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 09:03:01