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

遍历DataFrame列:针对给定两个DataFrame的技术实现问询

遍历DataFrame列的实用方案(适配你的两个DataFrame)

嘿,针对你给出的这两个结构完全一致的DataFrame(df1和df2),我整理了几种常用的列遍历实现方案,覆盖不同的操作场景,你可以按需选用:

1. 仅遍历列名(快速获取列清单)

如果只是想查看或批量处理列名称,直接迭代DataFrame的columns属性就够了:

# 遍历df1的所有列名
for col in df1.columns:
    print(f"当前处理列: {col}")

运行后会依次输出WEEK、DIM1、DIM2、T1、T2这些列名。

2. 遍历列的完整数据(操作每列的Series)

要是需要对每一列的实际数据做处理,比如统计、清洗,可以用items()方法同时获取列名和对应的数据Series:

# 遍历df1的每一列,输出列名和对应数据
for col_name, col_data in df1.items():
    print(f"=== 列: {col_name} ===")
    print(col_data)
    print("---")

比如针对T1列,会输出该列的所有行数据及数据类型,非常适合单列的批量操作。

3. 同时遍历两个DataFrame的对应列(对比/合并场景)

因为你的df1和df2结构完全匹配,很多时候需要同时处理对应列(比如对比数值差异、校验维度一致性),用zip()就能轻松配对两个df的列:

3.1 对比数值列的差异(比如T1/T2)

如果要计算两个df中T1、T2列的差值,代码可以这么写:

# 同时遍历两个df的对应列,计算数值列差值
for (col1_name, col1_data), (col2_name, col2_data) in zip(df1.items(), df2.items()):
    # 只处理*数值型列*T1和T2
    if col1_name in ["T1", "T2"]:
        diff_series = col1_data - col2_data
        print(f"列 {col1_name} 的差值结果:")
        print(diff_series)
        print("---")

针对你的数据,T1列的差值会是-5、90、-100,清晰展示每一行的差异。

3.2 校验维度列的一致性(比如WEEK/DIM1)

如果要检查两个df的维度列(比如WEEK、DIM1)是否完全匹配,避免数据错位:

# 遍历指定维度列,校验匹配性
for col_name in ["WEEK", "DIM1", "DIM2"]:
    if df1[col_name].equals(df2[col_name]):
        print(f"✅ 列 {col_name} 的所有行数据完全匹配")
    else:
        # 找出不匹配的行
        mismatch_rows = df1[df1[col_name] != df2[col_name]]
        print(f"❌ 列 {col_name} 存在不匹配行:")
        print(mismatch_rows)

运行后会发现DIM2列第三行的PQR和XYZ不匹配,其他维度列完全一致。

4. 进阶:用apply批量处理列

如果要对所有列执行相同的函数(比如统计非空值、计算均值),用apply()指定axis=0即可按列批量操作:

# 计算每一列的非空值数量
non_null_stats = df1.apply(lambda col: col.count(), axis=0)
print("各列非空值统计:")
print(non_null_stats)

输出会显示DIM2列只有2个非空值(因为第一行是NULL),其他列都是3个。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:22:36