James McCool
commited on
Commit
·
55d145d
1
Parent(s):
57b18cb
Add Conditional Manager to app.py for lineup filtering options
Browse filesImplemented a new Conditional Manager section that allows users to filter lineups based on player and stack criteria. Users can remove or include specific players or stacks from their lineups, with separate buttons for applying changes to the overall portfolio or exporting custom lineups. This enhances user control over lineup management and improves the overall functionality of the application.
app.py
CHANGED
@@ -1295,6 +1295,59 @@ with tab2:
|
|
1295 |
parsed_frame = parsed_frame[parsed_frame['Size'].isin(size_include)]
|
1296 |
st.session_state['export_base'] = parsed_frame.sort_values(by='median', ascending=False).reset_index(drop=True)
|
1297 |
st.session_state['export_merge'] = st.session_state['export_base'].copy()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1298 |
|
1299 |
with st.expander('Trimming Options'):
|
1300 |
with st.form(key='trim_form'):
|
|
|
1295 |
parsed_frame = parsed_frame[parsed_frame['Size'].isin(size_include)]
|
1296 |
st.session_state['export_base'] = parsed_frame.sort_values(by='median', ascending=False).reset_index(drop=True)
|
1297 |
st.session_state['export_merge'] = st.session_state['export_base'].copy()
|
1298 |
+
|
1299 |
+
with st.expander('Conditional Manager'):
|
1300 |
+
with st.form(key='conditional_manager_form'):
|
1301 |
+
player_names = set()
|
1302 |
+
for col in st.session_state['working_frame'].columns:
|
1303 |
+
if col not in excluded_cols:
|
1304 |
+
player_names.update(st.session_state['working_frame'][col].unique())
|
1305 |
+
st.write(st.multiselect("Remove: ", options=['Players', 'Stacks'], default=[], key='conditional_var_1'), "if lineup ", st.multiselect("contains: ", options=['Players', 'Stacks'], default=[], key='conditional_var_2'))
|
1306 |
+
if st.session_state['conditional_var_1'] == 'Players':
|
1307 |
+
conditional_remove = st.multiselect("Remove lineups containing players:", options=sorted(list(player_names)), default=[])
|
1308 |
+
elif st.session_state['conditional_var_1'] == 'Stacks':
|
1309 |
+
conditional_remove = st.multiselect("Remove lineups containing stacks:", options=sorted(list(set(st.session_state['stack_dict'].values()))), default=[])
|
1310 |
+
if st.session_state['conditional_var_2'] == 'Players':
|
1311 |
+
conditional_include = st.multiselect("Where lineups contain players:", options=sorted(list(player_names)), default=[])
|
1312 |
+
elif st.session_state['conditional_var_2'] == 'Stacks':
|
1313 |
+
conditional_include = st.multiselect("Where lineups contain stack:", options=sorted(list(set(st.session_state['stack_dict'].values()))), default=[])
|
1314 |
+
|
1315 |
+
submitted_col, export_col = st.columns(2)
|
1316 |
+
st.info("Portfolio Button applies to your overall Portfolio, Export button applies to your Custom Export")
|
1317 |
+
with submitted_col:
|
1318 |
+
reg_submitted = st.form_submit_button("Portfolio")
|
1319 |
+
with export_col:
|
1320 |
+
exp_submitted = st.form_submit_button("Export")
|
1321 |
+
if reg_submitted:
|
1322 |
+
st.session_state['settings_base'] = False
|
1323 |
+
parsed_frame = st.session_state['working_frame'].copy()
|
1324 |
+
if st.session_state['conditional_var_1'] == 'Players':
|
1325 |
+
if st.session_state['conditional_var_2'] == 'Players':
|
1326 |
+
parsed_frame = parsed_frame[~parsed_frame['player_names'].isin(conditional_remove)] & parsed_frame[parsed_frame['player_names'].isin(conditional_include)]
|
1327 |
+
elif st.session_state['conditional_var_2'] == 'Stacks':
|
1328 |
+
parsed_frame = parsed_frame[~parsed_frame['Stack'].isin(conditional_remove)] & parsed_frame[parsed_frame['Stack'].isin(conditional_include)]
|
1329 |
+
elif st.session_state['conditional_var_1'] == 'Stacks':
|
1330 |
+
if st.session_state['conditional_var_2'] == 'Players':
|
1331 |
+
parsed_frame = parsed_frame[parsed_frame['player_names'].isin(conditional_include)] & parsed_frame[~parsed_frame['player_names'].isin(conditional_remove)]
|
1332 |
+
elif st.session_state['conditional_var_2'] == 'Stacks':
|
1333 |
+
parsed_frame = parsed_frame[parsed_frame['Stack'].isin(conditional_include)] & parsed_frame[~parsed_frame['Stack'].isin(conditional_remove)]
|
1334 |
+
st.session_state['working_frame'] = parsed_frame.sort_values(by='median', ascending=False).reset_index(drop=True)
|
1335 |
+
st.session_state['export_merge'] = st.session_state['working_frame'].copy()
|
1336 |
+
elif exp_submitted:
|
1337 |
+
st.session_state['settings_base'] = False
|
1338 |
+
parsed_frame = st.session_state['export_base'].copy()
|
1339 |
+
if st.session_state['conditional_var_1'] == 'Players':
|
1340 |
+
if st.session_state['conditional_var_2'] == 'Players':
|
1341 |
+
parsed_frame = parsed_frame[~parsed_frame['player_names'].isin(conditional_remove)] & parsed_frame[parsed_frame['player_names'].isin(conditional_include)]
|
1342 |
+
elif st.session_state['conditional_var_2'] == 'Stacks':
|
1343 |
+
parsed_frame = parsed_frame[~parsed_frame['Stack'].isin(conditional_remove)] & parsed_frame[parsed_frame['Stack'].isin(conditional_include)]
|
1344 |
+
elif st.session_state['conditional_var_1'] == 'Stacks':
|
1345 |
+
if st.session_state['conditional_var_2'] == 'Players':
|
1346 |
+
parsed_frame = parsed_frame[parsed_frame['player_names'].isin(conditional_include)] & parsed_frame[~parsed_frame['player_names'].isin(conditional_remove)]
|
1347 |
+
elif st.session_state['conditional_var_2'] == 'Stacks':
|
1348 |
+
parsed_frame = parsed_frame[parsed_frame['Stack'].isin(conditional_include)] & parsed_frame[~parsed_frame['Stack'].isin(conditional_remove)]
|
1349 |
+
st.session_state['export_base'] = parsed_frame.sort_values(by='median', ascending=False).reset_index(drop=True)
|
1350 |
+
st.session_state['export_merge'] = st.session_state['export_base'].copy()
|
1351 |
|
1352 |
with st.expander('Trimming Options'):
|
1353 |
with st.form(key='trim_form'):
|