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

Pandas遍历DataFrame筛选值大于4的行并生成新列求助

解决Pandas遍历DataFrame筛选值大于4的行并生成新列的问题

原代码的问题分析

你的代码存在几个关键错误:

  • 遍历列值时仅获取了数值,没有拿到对应的行索引,需用items()方法同时获取索引和值
  • df(row).index是错误语法,无法正确获取行索引
  • append方法仅能接收一个参数,你传入两个参数会触发报错

修正后的代码示例

先假设你的DataFrame示例如下:

import pandas as pd

# 示例DataFrame
data = {'A': [1,5,3,6], 'B': [2,4,5,7], 'C': [8,2,3,1]}
df = pd.DataFrame(data)

修正后的遍历代码会收集所有值大于4的行索引和对应列名:

result_list = []
# 遍历每一列
for col in df.columns:
    # 遍历列内元素,同时获取行索引和对应值
    for idx, value in df[col].items():
        if value > 4:
            # 将行索引和列名以元组形式加入列表
            result_list.append( (idx, col) )

# 将结果转换为DataFrame,方便后续处理
result_df = pd.DataFrame(result_list, columns=['行ID', '列名'])
print(result_df)

直接在原DataFrame生成新列(标记满足条件的列名)

如果想在原DataFrame中新增一列,记录该行所有值大于4的列名(用逗号分隔),可以这样实现:

def get_matched_cols(row):
    # 筛选该行中值大于4的列名,并用逗号连接
    return ','.join([col for col in df.columns if row[col] > 4])

# 生成新列
df['满足条件的列名'] = df.apply(get_matched_cols, axis=1)
print(df)

运行后示例输出:

A  B  C 满足条件的列名
0  1  2  8          C
1  5  4  2          A
2  3  5  3          B
3  6  7  1        A,B

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:50:26