![](/img/trans.png)
[英]Pandas: ignore all lines following a specific string when reading a file into a 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
,上述操作可能會失敗。 在這種情況下,假設您想保留所有tickers
中medians
的代碼:
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.