给出的大多数答案似乎对答案没有帮助,对任何提出任何问题的人都没有帮助。回答问题的人们在发现自己的贡献没有用之后就不知道要解决问题了。我已经尝试了几乎所有可以找到的str()和.to_string变体。
无论如何,我一直在尝试将文件中的数据配对,并忽略无法配对的数据。我相信我已经将所有事物配对在一起,但是除了看到该列为真还是假之外,我没有其他方法可以验证这一点。
import pandas as pd
# read file
with open('TastyTrades.csv', 'r') as trade_history:
trade_reader = pd.read_csv('TastyTrades.csv')
# sort out for options only
options_frame = trade_reader.loc[(trade_reader['Instrument Type'] == 'Equity Option')]
# resort data
date_frame = options_frame.sort_values(by=['Symbol', 'Date', 'Action'], ascending=True)
# pair BTO to STC
BTO = date_frame['Action'].isin(['BUY_TO_OPEN', 'SELL_TO_CLOSE'])
STO = date_frame['Action'].isin(['SELL_TO_OPEN', 'BUY_TO_CLOSE'])
# bringing both frames as one
pairs = [BTO, STO]
# return readable data
result = pd.concat(pairs).astype(str)
# write to new file
result.to_csv('new_taste.csv')
这段代码带给我:
,Action
101,True
75,True
102,False
76,False
95,False
97,True
98,True
38,True
174,True
166,True
我正在尝试将数据恢复为可读格式:
Date,Type,Action,Symbol,Instrument Type,Description,Value,Quantity,Average Price,Commissions,Fees,Multiplier,Underlying Symbol,Expiration Date,Strike Price,Call or Put
2020-02-14T15:49:12-0500,Trade,SELL_TO_OPEN,TGT 200327C00127000,Equity Option,Sold 1 TGT 03/27/20 Call 127.00 @ 1.33,133,1,133,-1,-0.15,100,TGT,3/27/2020,127,CALL
2020-02-14T15:49:11-0500,Trade,SELL_TO_OPEN,TGT 200327P00107000,Equity Option,Sold 1 TGT 03/27/20 Put 107.00 @ 1.80,180,1,180,-1,-0.15,100,TGT,3/27/2020,107,PUT
2020-02-14T15:49:11-0500,Trade,BUY_TO_OPEN,TGT 200327C00128000,Equity Option,Bought 1 TGT 03/27/20 Call 128.00 @ 1.17,-117,1,-117,-1,-0.14,100,TGT,3/27/2020,128,CALL
答案 0 :(得分:1)
此处BTO和STO仅具有isin条件的结果(对或错)。 因此,重写您的两行,如下所示:
BTO = date_frame[date_frame['Action'].isin(['BUY_TO_OPEN', 'SELL_TO_CLOSE'])]
STO = date_frame[date_frame['Action'].isin(['SELL_TO_OPEN', 'BUY_TO_CLOSE'])]
这将为BTO和STO提供所有列,然后您可以合并这两个DF。 希望这可以帮助。 检查以下工作代码: 我尝试了,得到了预期的结果。所有行都使用上面的代码。我尝试不转换为“ str”,这也给了我相同的结果。尝试打印结果,看看结果如何显示。
BTO = quotes[quotes['Action'].isin(['BTO', 'STC'])]
STO = quotes[quotes['Action'].isin(['STO', 'BTC'])]
frames = [BTO,STO]
result = pd.concat(frames).astype(str)
result.to_csv('new_taste.csv')