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

Pandas技巧:提取列值正负切换时的对应行索引

捕获Pandas DataFrame中D列符号切换的行索引

核心思路

通过标记D列每行的符号,对比当前行与上一行的符号差异,筛选出符号切换的行并提取其索引。

完整实现代码

import pandas as pd
import numpy as np

# 构造示例DataFrame(替换为你的实际数据)
data = {
    'A': [None]*9,
    'B': [None]*9,
    'C': [None]*9,
    'D': [23.3, 24.4, 43, -45, -54, -56, -89, 89, 90]
}
df = pd.DataFrame(data, index=[0,1,2,3,4,5,6,7,8])

# 1. 生成D列的符号标记(正数为1,负数为-1)
df['sign'] = np.sign(df['D'])

# 2. 标记符号发生切换的行(当前行符号≠上一行符号)
df['sign_change'] = df['sign'] != df['sign'].shift(1)

# 3. 提取切换行的索引,生成新DataFrame
result_df = df[df['sign_change']].index.to_frame(name='切换行索引')

# 查看结果
print(result_df)

简化版(无需中间列)

如果不需要保留中间标记列,可直接合并为一行代码:

result_df = df[np.sign(df['D']) != np.sign(df['D']).shift(1)].index.to_frame(name='切换行索引')

输出结果

运行后将得到符合需求的新DataFrame:

切换行索引
3        3
7        7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:14:58