এক ফোল্ডারের ভেতরের সব এক্সেল ফাইল (.xlsx) একসাথে মার্জ করার জন্য glob মডিউল এবং প্যান্ডাসের concat() / append() ব্যবহার করা হয়। দ্রষ্টব্য: প্যান্ডাস ২.০+ এ append() ডিপ্রিকেটেড, concat() ব্যবহার করুন।
প্রয়োজনীয় প্যাকেজ
pip install pandas openpyxl xlrd
সম্পূর্ণ কোড
import pandas as pd
import glob
import os
# ফোল্ডার পাথ (আপনার পাথ অনুযায়ী পরিবর্তন করুন)
folder_path = r"C:\Users\YourName\Desktop\ExcelFiles" # r"..." রো স্ট্রিং
# সব .xlsx ফাইল খুঁজে বের করা
files = glob.glob(os.path.join(folder_path, "*.xlsx"))
print("খুঁজে পাওয়া ফাইলগুলো:", files)
# খালি লিস্টে ডেটাফ্রেম সংগ্রহ
dataframes = []
for file in files:
try:
# সব শিট পড়া (sheet_name=None)
sheets = pd.read_excel(file, sheet_name=None)
# সব শিট একসাথে concat
df = pd.concat(sheets.values(), ignore_index=True)
dataframes.append(df)
print(f"প্রক্রিয়া করা হয়েছে: {os.path.basename(file)} ({len(df)} সারি)")
except Exception as e:
print(f"এরর {file}: {e}")
# সব ডেটাফ্রেম একসাথে concat
if dataframes:
merged = pd.concat(dataframes, ignore_index=True)
# আউটপুট ফাইল
output_path = os.path.join(folder_path, "Merged_Output.xlsx")
merged.to_excel(output_path, index=False)
print(f"\nমার্জ সম্পূর্ণ! টোটাল সারি: {len(merged)}")
print(f"সংরক্ষিত: {output_path}")
else:
print("কোনো ফাইল প্রক্রিয়া করা হয়নি।")
মূল পয়েন্টসমূহ
glob.glob(pattern)— ফাইল প্যাটার্ন ম্যাচ করে ফাইল লিস্ট ফেরত দেয়sheet_name=None— এক্সেল ফাইলের সব শিট পড়ে (ডিকশনারি রিটার্ন করে)pd.concat(sheets.values())— সব শিট একসাথে জোড়া দেয়ignore_index=True— নতুন সিকোয়েন্সিয়াল ইনডেক্স বানায়pd.concat(dataframes)— সব ফাইলের ডেটা একসাথে মার্জ করে
বড় ফাইল হ্যান্ডলিং (Chunking)
# মেমরি সাশ্রয়ের জন্য chunk এ প্রক্রিয়া
chunk_size = 10000
chunks = []
for file in files:
for chunk in pd.read_excel(file, chunksize=chunk_size):
chunks.append(chunk)
merged = pd.concat(chunks, ignore_index=True)
সাধারণ সমস্যা ও সমাধান
| সমস্যা | সমাধান |
|---|---|
| কলাম মিসম্যাচ | pd.concat(..., sort=False) বা مسبক কলাম সেট করে |
| ডেটা টাইপ ভিন্ন | dtype প্যারামিটার বা astype() পরে |
| বড় ফাইল, মেমরি এরর | chunking বা Dask/Modin ব্যবহার |