In [ ]:
import pandas as pd
import os
from pathlib import Path
proj_dir = Path(os.getcwd()).parent
data_fname = proj_dir.joinpath('data', 'interim', 'labeled.pickle')
data_fname

In [ ]:
dframe = pd.read_pickle(str(data_fname))

In [ ]:
enchanced_data = dframe.copy()

In [ ]:
enchanced_data['gx01'] = dframe['x0'] * dframe['x1']
enchanced_data['gx12'] = dframe['x1'] * dframe['x2']
enchanced_data['gx23'] = dframe['x2'] * dframe['x3']
enchanced_data['gx30'] = dframe['x3'] * dframe['x0']

In [ ]:
def feature_interactions(row):
    return pd.Series([
        row['x0'] * row['x1'],
        row['x1'] * row['x2'],
        row['x2'] * row['x3'],
        row['x3'] * row['x0']        
    ])

In [ ]:
engineered_features = dframe.apply(feature_interactions, axis=1)
engineered_features.columns = ['gx01', 'gx12', 'gx23', 'gx30']
enchanced_data2 = dframe.join(engineered_features)

In [ ]:
enchanced_data.equals(enchanced_data2)