Always convert to posix time
parent
ac5e9de1b3
commit
ee4b3a327c
|
@ -64,21 +64,35 @@ def from_df(
|
|||
"""Convert OHLC formatted ``pandas.DataFrame`` to ``numpy.recarray``.
|
||||
"""
|
||||
df.reset_index(inplace=True)
|
||||
df['Date'] = [d.timestamp() for d in df.Date]
|
||||
|
||||
# hackery to convert field names
|
||||
date = 'Date'
|
||||
if 'date' in df.columns:
|
||||
date = 'date'
|
||||
|
||||
# convert to POSIX time
|
||||
df[date] = [d.timestamp() for d in df[date]]
|
||||
|
||||
# try to rename from some camel case
|
||||
columns={
|
||||
columns = {
|
||||
'Date': 'time',
|
||||
'date': 'time',
|
||||
'Open': 'open',
|
||||
'High': 'high',
|
||||
'Low': 'low',
|
||||
'Close': 'close',
|
||||
'Volume': 'volume',
|
||||
}
|
||||
for name in df.columns:
|
||||
if name not in columns:
|
||||
del df[name]
|
||||
|
||||
df = df.rename(columns=columns)
|
||||
|
||||
for name in df.columns:
|
||||
if name not in OHLC_dtype.names:
|
||||
del df[name]
|
||||
|
||||
# TODO: it turns out column access on recarrays is actually slower:
|
||||
# https://jakevdp.github.io/PythonDataScienceHandbook/02.09-structured-data-numpy.html#RecordArrays:-Structured-Arrays-with-a-Twist
|
||||
# it might make sense to make these structured arrays?
|
||||
array = df.to_records()
|
||||
_nan_to_closest_num(array)
|
||||
|
||||
|
@ -88,7 +102,6 @@ def from_df(
|
|||
def _nan_to_closest_num(array: np.ndarray):
|
||||
"""Return interpolated values instead of NaN.
|
||||
"""
|
||||
|
||||
for col in ['open', 'high', 'low', 'close']:
|
||||
mask = np.isnan(array[col])
|
||||
if not mask.size:
|
||||
|
|
Loading…
Reference in New Issue