簡體   English   中英

忽略 pandas DataFrame 中的行

[英]Ignore lines in pandas DataFrame

我有一個名為reassembly的列表,其組織方式如下:

['AFLT', 228468.0, 'B'],
['TATN', 1108.6, 'B'],
['TATN', 4434.4, 'B'],
['MOEX', 3480.0, 'S'],
['YNDX', 5934.0, 'B'],
['MTSS', 36003.0, 'S'],
['SBERP', 33837.1, 'S'],
['SBERP', 1780.8, 'S'],
['MTSS', 3273.0, 'S'],
['AFLT', 124356.0, 'B'],
['AFLT', 20244.0, 'B'],
['MGNT', 72990.0, 'B'],
['NLMK', 230917.0, 'B'],
['NLMK', 156050.0, 'B'],
['NLMK', 31220.0, 'B'],
['MGNT', 36450.0, 'S'],
['TCSG', 14045.2, 'S'],
['TCSG', 2160.4, 'S'],

還有一個字典叫做中位數與數據:

{'TATNP': 11968.05, 'TCSG': 8647.2, 'TRNFP': 130250.0, 'UPRO': 7941.0, 'VTBR': 3828.28, 'YNDX': 17660.4}

字典中的鍵等價於列表中的第一個值('AFLT'、'VTBR' 等)

我將重組轉換為 pandas:

df = pd.DataFrame(reassembly, columns=['ticker','vol','operation'])

現在我想做這樣的事情:

df = df[df['vol'] < median['ticker']]

我的意思是如果這個股票代碼的 vol < 中位數應該忽略它。

請幫助我正確編寫此代碼。

你想要map

high_volumes = df[df['vol'] > df['ticker'].map(medians)]

# do suff with high volume transaction

請注意,如果您沒有中medians的所有tickers ,上述操作可能會失敗。 在這種情況下,假設您想保留所有tickersmedians的代碼:

meds = df['ticker'].map(medians)
high_volumes = df[(df['vol']>meds)|(meds.isna())]

df = df[df['vol'] > df['ticker'].map(median)]

我建議用列表理解來解決這個問題,然后 pipe 將結果轉換為熊貓。

reassembly = [['AFLT', 228468.0, 'B'],
['TATN', 1108.6, 'B'],
['TATN', 4434.4, 'B'],
['MOEX', 3480.0, 'S'],
['YNDX', 5934.0, 'B'],
['MTSS', 36003.0, 'S'],
['SBERP', 33837.1, 'S'],
['SBERP', 1780.8, 'S'],
['MTSS', 3273.0, 'S'],
['AFLT', 124356.0, 'B'],
['AFLT', 20244.0, 'B'],
['MGNT', 72990.0, 'B'],
['NLMK', 230917.0, 'B'],
['NLMK', 156050.0, 'B'],
['NLMK', 31220.0, 'B'],
['MGNT', 36450.0, 'S'],
['TCSG', 14045.2, 'S'],
['TCSG', 2160.4, 'S']]

medians = {'TATNP': 11968.05, 'TCSG': 8647.2, 'TRNFP': 130250.0, 'UPRO': 7941.0, 'VTBR': 3828.28, 'YNDX': 17660.4}

ready_for_panda = [x for x in reassembly if x[0] in medians and x[1] > medians[x[0]]]

pd.DataFrame(ready_for_panda, columns=["ticker", "vol", "operation"])

ticker  vol      operation
TCSG    14045.2  S

我假設您想從重組中過濾掉任何體積小於此股票代碼當前中值的元素。

暫無
暫無

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

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