script for merging csv

This commit is contained in:
prisar
2023-07-14 16:56:28 +05:30
parent 521eb235d5
commit 1f65c08ed9
3 changed files with 135 additions and 7 deletions

78
scripts/merge_csv_k.py Normal file
View File

@@ -0,0 +1,78 @@
import csv
import os
from tkinter import Tk, filedialog
def merge_csv_files(input_files, output_file):
file_contents = {}
header = ['First Column']
# Read all selected CSV files
for filepath in input_files:
filename = os.path.basename(filepath)
with open(filepath, 'r') as file:
csv_reader = csv.reader(file)
next(csv_reader) # Skip the header row
for row in csv_reader:
try:
value = float(row[0])
if 300 <= value <= 700: # Check if the value is within the range
if row[0] not in file_contents:
file_contents[row[0]] = {}
file_contents[row[0]][filename] = row[1]
if filename not in header:
header.append(filename)
except ValueError:
pass
# Write the merged contents into the output file
with open(output_file, 'w', newline='') as file:
csv_writer = csv.writer(file)
csv_writer.writerow(header)
for key, values in file_contents.items():
row = [key]
for filename in header[1:]:
row.append(values.get(filename, ''))
csv_writer.writerow(row)
print(f'Merged CSV files saved to: {output_file}')
def extract_data_from_merged_file(merged_file):
data = []
with open(merged_file, 'r') as file:
csv_reader = csv.reader(file)
header = next(csv_reader) # Get the header row
for i, row in enumerate(csv_reader, start=1):
if i in (365, 750):
extracted_row = []
for j, value in enumerate(row[1:], start=1):
column_name = header[j]
extracted_row.append((column_name, value))
data.append(extracted_row)
return data
if __name__ == "__main__":
# Create a file dialog to select multiple CSV files
root = Tk()
root.withdraw()
input_files = filedialog.askopenfilenames(title='Select CSV files', filetypes=(('CSV files', '*.csv'),))
# Ensure at least one file is selected
if input_files:
# Specify the output file path
output_file = 'merged.csv'
merge_csv_files(input_files, output_file)
extracted_data = extract_data_from_merged_file(output_file)
for row in extracted_data:
print(row)
else:
print('No files selected. Program will exit.')