[英]select a partial string from a pandas DataFrame save in a column
[英]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.