Pandas df.iloc函数为左闭右开,截取某个位置到最后一个位置的数据必须使用df.iloc[start:],即缺省结束位置的索引值,故若截取任意区间数据的方法可分装如下:

import pandas as pd

def slice_dataframe(df: pd.DataFrame, start: int, end: int = None) -> pd.DataFrame:
    """
    截取Pandas DataFrame中指定起始位置到截止位置的数据。
    
    参数:
    df (pd.DataFrame): 输入的DataFrame数据
    start (int): 起始位置索引(包含)
    end (int, optional): 截止位置索引(不包含)。若为None,则截取到最后一行(包含)。
    
    返回:
    pd.DataFrame: 截取后的子DataFrame
    """
    if end is None:
        # 如果未提供end,使用切片[start:]以包含最后一行
        return df.iloc[start:]
    else:
        # 如果提供了end,使用标准切片[start:end],遵循左闭右开
        return df.iloc[start:end]

if __name__ == "__main__":
    # 创建示例数据
    data = {
        'A': range(10),
        'B': [f'val_{i}' for i in range(10)]
    }
    df_example = pd.DataFrame(data)
    
    print("原始数据:")
    print(df_example)
    
    # 测试1:截取索引2到5(不包含5)
    result1 = slice_dataframe(df_example, 2, 5)
    print("\n截取位置 [2:5] 的结果 (左闭右开):")
    print(result1)
    
    # 测试2:截取从索引7开始到最后(包含最后一行)
    result2 = slice_dataframe(df_example, 7)
    print("\n截取位置 [7:] 的结果 (包含最后一行):")
    print(result2)

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐