Как объединить множество загруженных CSV-файлов в один DataFrame в Streamlit

Я сделал программу, которая берет CSV-файлы и подсчитывает средние значения. Пытаюсь сделать интерфейс в Streamlit. Я пытаюсь использовать решение из моей программы

data = st.file_uploader("Wybierz pliki CSV:",type = 'csv', accept_multiple_files=True)
for file in data:
   Table = pd.read_csv(file, sep=',')
   DF1 = pd.DataFrame(Table)
   DFL = pd.concat([DFL,DF1], sort=False)

Когда я пытаюсь распечатать это с помощью st.dataframe(DFL) Я получаю эту ошибку:

StreamlitAPIException: ("Не удалось преобразовать "06028001018" с типом str: попытка преобразования в int64", "Сбой преобразования для столбца LPROS1 с типом объекта")

Кто-нибудь знает, как это конкатировать?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
43
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуйте так:

data = st.file_uploader("Wybierz pliki CSV:",type = 'csv', 
accept_multiple_files=True)
Table = []
for file in data:
    if file.endswith(".csv"):
         Table.append(pd.read_csv(file)

df = pd.concat(Table, sort=False)

Я пробую ваш код, но получаю ту же ошибку.

maciej.o 16.03.2022 13:51

Попробуйте без .endswith(".csv")

Egor K 16.03.2022 13:53

Я пытался, но получаю ошибку: StreamlitAPIException: («Не удалось преобразовать ‘06028001018’ с типом str: попытался преобразовать в int64», «Ошибка преобразования для столбца LPROS1 с типом объекта»). Та же ошибка, что и в начале.

maciej.o 16.03.2022 14:06

Перепроверьте свое сообщение об ошибке.

StreamlitAPIException: ("Could not convert '06028001018' with type str: tried to convert to int64", 'Conversion failed for column LPROS1 with type object')

Речь идет о типе данных в столбце LPROS1.

Хорошо, но я не конвертирую этот столбец, я не знаю, почему Streamlit пытается его преобразовать. Я просто хочу сделать один большой DF.

maciej.o 23.03.2022 14:07
Ответ принят как подходящий

StreamlitAPIException: ("Could not convert '06028001018' with type str: tried to convert to int64", 'Conversion failed for column LPROS1 with type object')

Это ошибка, появившаяся в обтекаемый 0.85.0. pyarrow имеет проблему со значениями numpy.dtype (которые возвращает df.dtypes).

В качестве обходного пути вы можете добавить следующие строки в свой код.

DF2 = DFL.astype(str)
st.dataframe(DFL2)

или попробуйте другой предложенный обходной путь отсюда

Как исправить StreamlitAPIException: ("Ожидаемые байты, получен объект 'int'", 'Ошибка преобразования для столбца FG% с типом объекта')

Рад, что помогло :)

Pluviophile 29.03.2022 12:34

Другие вопросы по теме