Я пытаюсь объединить все фреймы данных, начинающиеся со строки user_ в потоке, но получаю ошибку.
пример кода:
import streamlit as st
import pandas as pd
st.set_page_config(page_title="Science",
layout='wide',
initial_sidebar_state="expanded")
# sample dataframes
st.session_state.user_df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
st.session_state.user_df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
st.session_state.df3 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
# list of dataframes starting with user_
st.session_state.users_list = [name for name in st.session_state if name.startswith('user_')]
st.write(st.session_state.users_list)
# using eval to evaluate string dataframe names
# st.write([eval(st.session_state.name) for st.session_state.name in st.session_state.users_list])
st.session_state.df_final = pd.concat([eval(st.session_state.name) for st.session_state.name
in st.session_state.users_list],
ignore_index=True)
st.table(st.session_state.df_final)
ОБНОВЛЕНИЕ:
Вся эта логика работает без потоковой подсветки, но я получаю ошибку здесь в streamlit, не знаю, что не так. Благодарим за любую помощь!
Эта логика/код без потоковой подсветки работает:
import pandas as pd
user_df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
user_df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
df3 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
users_list = ['user_df1','user_df2']
print([eval(name) for name in users_list])
df_final = pd.concat([eval(name) for name in users_list],ignore_index=True)
print('----df_final------')
print(df_final)
выход:
[ A B
0 1 3
1 2 4, A B
0 5 7
1 6 8]
----df_final------
A B
0 1 3
1 2 4
2 5 7
3 6 8
``
Подробнее здесь: https://stackoverflow.com/questions/789 ... -streamlit
Невозможно объединить фреймы данных в потоке ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как объединить и сопоставить фреймы данных (списки) разной длины в Python/Pandas
Anonymous » » в форуме Python - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-