import streamlit as st import pandas as pd # Streamlit App st.title('CSV File Merger') # File uploaders for multiple CSV files uploaded_files = st.file_uploader("Upload CSV files", type=["csv"], accept_multiple_files=True) # Dropdown to select merge type merge_type = st.selectbox("Select merge type", ["inner", "outer", "left", "right"]) # Text input for common column name common_column = st.text_input("Enter the common column name") if len(uploaded_files) > 1 and common_column: # Read all uploaded CSV files into a list of DataFrames dfs = [pd.read_csv(file) for file in uploaded_files] # Display the original DataFrames st.subheader('Original DataFrames') for i, df in enumerate(dfs): st.write(f"DataFrame {i + 1}:") st.write(df) try: # Perform the merge based on the selected type and common column merged_df = dfs[0] for df in dfs[1:]: merged_df = pd.merge(merged_df, df, on=common_column, how=merge_type) # Display the merged DataFrame st.subheader('Merged DataFrame') st.write(merged_df) # Option to download the merged DataFrame st.download_button( label="Download Merged DataFrame", data=merged_df.to_csv(index=False), file_name='merged_data.csv', mime='text/csv' ) except KeyError: st.error(f"Column '{common_column}' not found in one or more files.") except Exception as e: st.error(f"An error occurred: {e}") else: st.info("Please upload at least two CSV files and specify the common column name.")