Spaces:
Sleeping
Sleeping
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.") | |