【问题标题】:Performing a function on column values based on index locations根据索引位置对列值执行函数
【发布时间】:2025-12-23 14:05:11
【问题描述】:

我有一个包含 3 列的数据框; ['close', 'BUY', 'SELL']'BUY''SELL' 列是布尔值,指示买卖的索引位置 - 它们分布在许多行中 - 大约 3000。我已经能够找到这些布尔值为真的索引 (1) 使用:

returns[returns.BUY == 1]

我希望能够根据这些布尔位置找到第 n 个索引点,然后将函数应用于与索引点 n 和 n+n 对应的“关闭”列值。

谢谢!

【问题讨论】:

    标签: python pandas dataframe indexing


    【解决方案1】:

    您可以使用

    找到索引
    returns[returns.BUY == 1].index.values.astype(int)
    

    编辑: 不确定我是否理解正确。您可以尝试用

    构建 +n 的索引
    for i in range(1, len(df) - n):
        df.loc[i, 'index+n'] = df.loc[i+n, 'index']
    

    然后您可以使用 apply 函数来使用您想要使用的任何条件。

    【讨论】:

    • 是的,我已经找到了索引。我想知道如何根据这些特定的索引点将函数应用于名为“close”的列,然后是 +n 的索引点 - 然后都引用“close”列中的相应值。
    • 你知道一个函数可以让我只将它应用到某个列中条件为真的实例吗?我添加了一张数据框的图片来说明我的意思。
    • 我可能会尝试np.where()
    【解决方案2】:

    您快到了,只需将列名添加到您的切片并应用your_function

    returns.loc[returns.BUY == 1, 'close'].apply(your_function)
    

    【讨论】:

    • 你知道一个函数可以让我只将它应用于某个列中条件为真的实例吗?我添加了一张数据框的图片来说明我的意思。