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

Pandas对比DataFrame相邻行生成新列出现维度不匹配错误如何解决

错误原因

你的代码中a[1:]的长度为n-1(n为DataFrame总行数),a[2:]的长度为n-2,二者做比较时长度不匹配无法广播运算,且最终返回的数组长度和原DataFrame的行数不一致,因此抛出报错。

正确实现方案

推荐直接用Pandas内置的shift方法实现,代码简洁且无需额外处理长度匹配问题:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame({'col1': [1,3,3,1,2,3,2,2]})

# 核心逻辑:将col1向下偏移1行,和当前行比较,结果转整数,最后一行默认留NaN
df['out'] = (df['col1'] < df['col1'].shift(-1)).astype('Int64')

# 如果需要把最后一行的NaN替换为'-',可以加下面这行
df['out'] = df['out'].fillna('-')

如果坚持用Numpy实现,可以修正为如下写法:

def comp_out(a):
    # 前n-1个元素和后n-1个元素比较,得到长度为n-1的结果,最后补1个NaN对齐总行数
    return np.append((a[:-1] < a[1:]).astype(int), np.nan)

df['out'] = comp_out(df.col1.values)
# 同样可以用fillna替换最后一行的NaN为'-'

运行后输出结果和你预期的完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:54:01