zhaorui-nb
commited on
Commit
โข
4a14d79
1
Parent(s):
f9d3528
fix filter serach bug
Browse files
utils/filterable_dataframe.py
CHANGED
@@ -2,7 +2,6 @@ import streamlit as st
|
|
2 |
|
3 |
|
4 |
|
5 |
-
|
6 |
def filterable_dataframe(df):
|
7 |
# ๅค้ธๆก้ธๆ้่ฆ็ฏฉ้ธ็ๅ
|
8 |
selected_columns = st.multiselect('Select columns to filter', options=df.columns)
|
@@ -14,12 +13,27 @@ def filterable_dataframe(df):
|
|
14 |
with st.expander(f'Filter by {column}', expanded=True):
|
15 |
if df[column].dtype == 'object':
|
16 |
unique_values = df[column].unique()
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
if
|
22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
else:
|
24 |
min_value, max_value = df[column].min(), df[column].max()
|
25 |
selected_range = st.slider(f'Select range for {column}', min_value, max_value, (min_value, max_value))
|
|
|
2 |
|
3 |
|
4 |
|
|
|
5 |
def filterable_dataframe(df):
|
6 |
# ๅค้ธๆก้ธๆ้่ฆ็ฏฉ้ธ็ๅ
|
7 |
selected_columns = st.multiselect('Select columns to filter', options=df.columns)
|
|
|
13 |
with st.expander(f'Filter by {column}', expanded=True):
|
14 |
if df[column].dtype == 'object':
|
15 |
unique_values = df[column].unique()
|
16 |
+
multiselect_value = st.multiselect(f'Select values for {column}', options=list(unique_values))
|
17 |
+
re_pattern = st.text_input(f'Search re pattern {column}')
|
18 |
+
|
19 |
+
final_selected_values = []
|
20 |
+
if multiselect_value:
|
21 |
+
final_selected_values.extend(multiselect_value)
|
22 |
+
|
23 |
+
|
24 |
+
if re_pattern:
|
25 |
+
re_pattern = re.compile(re_pattern)
|
26 |
+
match_value = [value for value in unique_values if re_pattern.search(value)]
|
27 |
+
if match_value:
|
28 |
+
final_selected_values.extend(match_value)
|
29 |
+
# st.write('Match value:', match_value)
|
30 |
+
else:
|
31 |
+
st.write('No match value')
|
32 |
+
final_selected_values.append('')
|
33 |
+
|
34 |
+
if final_selected_values:
|
35 |
+
filters[column] = final_selected_values
|
36 |
+
|
37 |
else:
|
38 |
min_value, max_value = df[column].min(), df[column].max()
|
39 |
selected_range = st.slider(f'Select range for {column}', min_value, max_value, (min_value, max_value))
|