如何将对象转换为字符串pandas-python



对于那些看起来有帮助的问题,给出的大多数答案对任何提问的人都没有帮助。回答问题的人也不知道,在他们发现自己的贡献不起作用后,他们会想办法解决问题。我几乎尝试了我能找到的所有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

此处BTO和STO将只具有isin条件的结果(true或false(。因此,重写你的两行如下:

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

最新更新