· 7 years ago · Oct 21, 2018, 11:16 PM
1import h5py
2import numpy as np
3import pandas as pd
4
5from datetime import datetime
6from os import listdir
7from pandas import HDFStore
8
9
10def maintainLedger(mode, tick, lastBuyy = 0, lastSell = 0, quan = 0, prof = 0):
11 """THIS FUNCTION WRITES AND READS TRANSACTION DETAILS.
12 mode = 0 - IF FILE EXITS, READ FILE
13 mode = 1 - IF FILE EXITS, APPEND TO FILE"""
14
15 # CHECK IF LEDGER FILE EXISTS, IF NOT CREATE A LEDGER FILE FOR THE FIRST TIME
16 path = r'ledger'
17 suff = r'h5'
18 flie = listdir(path)
19 flie = [item for item in flie if item.endswith(suff)]
20
21 if len(flie) == 0:
22 HDF5Data = HDFStore('ledger/ledger.h5')
23
24 mi = int(datetime.now().minute)
25 ho = int(datetime.now().hour)
26 da = int(datetime.now().day)
27 we = int(datetime.now().isocalendar()[1])
28 mo = int(datetime.now().month)
29 ye = int(datetime.now().year)
30
31 newwData = np.array([mode, mi, ho, da, we, mo, ye, tick, lastBuyy, lastSell, quan, prof]).reshape(1, 12)
32 newwData = pd.DataFrame(newwData, columns = ['mode', 'mi', 'ho', 'da', 'we', 'mo', 'ye', 'tick', 'laBu', 'laSe', 'quan', 'prof'])
33 HDF5Data.put('data', newwData, format = 'table', data_columns = True)
34 HDF5Data.close()
35
36 elif len(flie) == 1:
37 if mode == 0:
38 # READ FILE
39 readData = pd.read_hdf('ledger/ledger.h5', mode = 'r')
40 readData.close()
41
42 elif mode == 1:
43 # APPEND TO FILE
44 mi = int(datetime.now().minute)
45 ho = int(datetime.now().hour)
46 da = int(datetime.now().day)
47 we = int(datetime.now().isocalendar()[1])
48 mo = int(datetime.now().month)
49 ye = int(datetime.now().year)
50
51 newwData = np.array([mode, mi, ho, da, we, mo, ye, tick, lastBuyy, lastSell, quan, prof]).reshape(1, 12)
52 newwData = pd.DataFrame(newwData, columns = ['mode', 'mi', 'ho', 'da', 'we', 'mo', 'ye', 'tick', 'laBu', 'laSe', 'quan', 'prof'])
53
54 readData = pd.read_hdf('ledger/ledger.h5', mode = 'a')
55 readData.append('data', newwData)
56 readData.close()
57
58 tempData = pd.read_hdf('ledger/ledger.h5', mode = 'r')
59 print(tempData)
60
61 else:
62 print('Please check input data for errors!')
63
64
65
66if __name__ == '__main__':
67 maintainLedger(1, "AAPL")
68
69TypeError: cannot concatenate object of type "<class 'str'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid