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
相关产品推荐
相关产品推荐

