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

如何将DataFrame索引作为条件赋值?代码条件判断失效求助

问题分析与解决方案

问题根源

你的代码中,每次遍历DataFrame行时,都会直接给period_{i}整列赋值。比如第一次遍历到Item 1时,整列被设为10,但紧接着遍历到Item 2时,整列又被覆盖为100,直到最后一行Item 4,整列最终值是100,导致你的索引条件判断完全失效。

推荐解决方案(Pandas向量化操作,高效简洁)

Pandas不推荐嵌套循环操作,优先用向量化方法实现:

import pandas as pd

# 初始化带指定索引的DataFrame
df1 = pd.DataFrame(index=['Item 1', 'Item 2', 'Item 3', 'Item 4'])

# 生成所有要创建的period列名
period_columns = [f'period_{i}' for i in range(1, 55)]

# 先给所有列赋值100
df1[period_columns] = 100
# 单独给Item 1的所有period列赋值10
df1.loc['Item 1', period_columns] = 10

若坚持使用循环的修正写法

如果一定要用循环实现,需要避免整列覆盖,只修改对应行的单元格:

import pandas as pd

df1 = pd.DataFrame(index=['Item 1', 'Item 2', 'Item 3', 'Item 4'])

multipliers = range(1, 55)
for i in multipliers:
    # 先初始化列值为100
    df1[f'period_{i}'] = 100
    # 遍历行找到Item 1,修改对应单元格
    for j, row in df1.iterrows():
        if j == 'Item 1':
            df1.loc[j, f'period_{i}'] = 10
            break  # 找到目标行后直接跳出循环,提升效率

内容的提问来源于stack exchange,提问作者Sydney

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:55:32