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

Python新手求助:生成生产订单矩阵DataFrame时遇异常

解决生产序列DataFrame生成问题

嘿,我懂你碰到的麻烦了!你当前的核心问题出在这句代码上:

sequence = 'seq_'+str(len(df.columns))

它生成的是字符串形式的变量名(比如'seq_2'),而不是你之前定义的seq_2这个列表变量本身。所以当你用这个字符串去构建DataFrame时,自然会把字符串'seq_2'填充到每个单元格里,而不是你想要的数字序列。

正确的解决思路:用字典映射序列

与其通过拼接字符串找变量名,不如把不同产品数量对应的序列存在字典里,这样可以直接根据产品数量(列数)精准获取对应的序列,既清晰又安全:

import pandas as pd

# 第一步:把所有序列存入字典,键是产品数量,值是对应序列
seq_dict = {
    2: [[0, 0], [1, 0]],
    3: [[0, 0, 0], [1, 0, 0], [0, 1, 0]]
}

# 假设你已经有了原始的df,先获取产品数量(列数)
prod_count = len(df.columns)

# 第二步:从字典中取出对应序列
target_sequence = seq_dict[prod_count]

# 第三步:构建目标DataFrame,设置索引和列名为产品名
production_df = pd.DataFrame(
    target_sequence,
    index=[f"Prod{i+1}" for i in range(prod_count)],
    columns=[f"Prod{i+1}" for i in range(prod_count)]
)

# 打印验证(以2款产品为例)
print(production_df)

运行后,2款产品的输出就会符合你的预期:

Prod1  Prod2
Prod1      0      0
Prod2      1      0

补充说明:为什么不推荐用globals()/locals()?

可能你会想到用globals()[sequence]来通过字符串获取变量,但这种方法很不安全——如果输入的字符串意外匹配到其他全局变量,容易引发bug或安全问题。用字典的方式更直观,也更容易维护(后续新增产品数量的序列,直接往字典里加键值对就行)。

内容的提问来源于stack exchange,提问作者Amy W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:18:46