Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pandas as pd | |
from io import StringIO | |
# Function to manipulate CSV based on instruction | |
def manipulate_csv(file, instruction): | |
if file is None: | |
return "Please upload a CSV file", None | |
# Read the CSV file | |
original_df = pd.read_csv(file) | |
manipulated_df = original_df.copy() | |
# Process instruction (basic examples) | |
try: | |
if "add column" in instruction.lower(): | |
column_name = instruction.split("add column ")[1] | |
manipulated_df[column_name] = "New Data" | |
elif "filter rows" in instruction.lower(): | |
column, value = instruction.split("filter rows ")[1].split("=") | |
manipulated_df = manipulated_df[manipulated_df[column.strip()] == value.strip()] | |
elif "drop column" in instruction.lower(): | |
column_name = instruction.split("drop column ")[1] | |
manipulated_df = manipulated_df.drop(columns=[column_name.strip()]) | |
else: | |
return "Instruction not recognized. Try: 'add column X', 'filter rows column=value', 'drop column X'", None | |
except Exception as e: | |
return f"Error: {str(e)}", None | |
# Return dataframes as HTML tables | |
return original_df.to_html(index=False), manipulated_df.to_html(index=False) | |
# Gradio Interface | |
with gr.Blocks() as demo: | |
gr.Markdown("# CSV Manipulation Tool") | |
file_input = gr.File(label="Upload CSV File", type="file") | |
instruction_input = gr.Textbox(label="Instruction (e.g., 'add column new_column')") | |
original_output = gr.HTML(label="Original CSV Data") | |
manipulated_output = gr.HTML(label="Manipulated CSV Data") | |
run_button = gr.Button("Apply Instruction") | |
# Link inputs and outputs | |
run_button.click(manipulate_csv, inputs=[file_input, instruction_input], outputs=[original_output, manipulated_output]) | |
# Launch Gradio Interface | |
demo.launch() | |