簡體   English   中英

如何從熊貓數據框中選擇部分數據

[英]how to select partial data from a pandas dataframe

我有一個數據框,flag=np.sign(value)

ticker    value    flag    cumsum(flag)
A1        -1.5     -1         -1
B1         1.4      1         0       
C3        -2.4     -1         -1 
D4        -1.8     -1         -2
E6        -1.6     -1         -3

我有一個變量,截止值 = 1(它總是 +ve,它是一個模數)

我怎樣才能最好地選擇 abs(cumsum(flag)) <= 1 的代碼

即,預期輸出是 [A1, B1, C3]

即我想繼續向下 cumsum 列表,直到找到 LAST 1 或 -1

我嘗試了一個循環:

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])  

但這只會給我 A1 和 C3,而會錯過 B2

謝謝

每條評論注釋:@Vaishali - 這個問題不是重復的。 我想要股票列表中的所有值,直到我們到達 cumsum 列表中的最后一個 -1。

上面,我們在 C3 處得到了最終的 abs(val)=1,所以我的列表是 C3、B1、A1。

您指向我的線程的解決方案僅提供 A1 和 C3。

您注意到 A1 不是 cumsum 列表中的最后一個 -1,因此僅 A1 是不夠的。 我們注意到 C3 是最后 +/-1 發生的地方,因此我們需要的列表是 A1,B1,C3

謝謝!!

您可以根據您的條件找到最后一個有效索引並創建一個切片。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM