Python 如何从数据帧中选择部分数据

Python 如何从数据帧中选择部分数据,python,pandas,Python,Pandas,我有一个数据框, flag=np.符号(值) 我有一个变量,截止=1(它总是+ve,它是一个模数) 我如何才能最好地选择abs(cumsum(flag))可以根据您的条件找到最后一个有效索引并创建一个切片的股票代码 idx = df[df['cumsum(flag)'].abs() <= 1].last_valid_index() df.loc[:idx, :] ticker value flag cumsum(flag) 0 A1 -1.5 -1

我有一个数据框, flag=np.符号(值)

我有一个变量,截止=1(它总是+ve,它是一个模数)


我如何才能最好地选择abs(cumsum(flag))可以根据您的条件找到最后一个有效索引并创建一个切片的股票代码

idx = df[df['cumsum(flag)'].abs() <= 1].last_valid_index()
df.loc[:idx, :]

    ticker  value   flag    cumsum(flag)
0   A1      -1.5    -1      -1
1   B1       1.4     1       0
2   C3      -2.4    -1      -1

idx=df[df['cumsum(flag)”.abs()尝试df[df['cumsum(flag)”.abs()@Vaishali-Hi,不起作用。这给了我与循环相同的输出。它没有给出A1、B1、C3的预期输出(它遗漏了B2)…有什么想法吗?@Vaishali-这个问题不是重复的。我想要股票代码列表中的所有值,直到我们得到cumsum列表中的最终-1。上面,我们得到了最终的abs(val)=1在C3处,所以我的列表是C3、B1、A1。您注意到A1不是累积值列表中的最终-1,因此仅A1是不够的。您的示例df没有ticker B2如此难以理解所需的行为。您可以尝试我刚才发布的答案,并让我知道。
ticker_list_keep = []
for y in range(0, len(df['cumsum']), 1):
if abs(df['cumsum'][y]) < abs(capacity) + 1: 
ticker_list_keep.append(df.index[y])  
idx = df[df['cumsum(flag)'].abs() <= 1].last_valid_index()
df.loc[:idx, :]

    ticker  value   flag    cumsum(flag)
0   A1      -1.5    -1      -1
1   B1       1.4     1       0
2   C3      -2.4    -1      -1