প্যান্ডাস ডেটাফ্রেমে মাল্টি-লেভেল কলাম ইনডেক্স থেকে একটি লেভেল সরানোর জন্য columns.droplevel() মেথড ব্যবহার করা হয়। কলাম-ওয়ারাইজ ইনডেক্স তৈরি করতে MultiIndex.from_tuples() ব্যবহার করা হয়।
প্রস্তুতি: মাল্টি-লেভেল কলাম ইনডেক্স তৈরি
প্রথমে টাপল থেকে মাল্টি-ইনডেক্স তৈরি করা যাক:
import pandas as pd
items = pd.MultiIndex.from_tuples([
("Col 1", "Col 1", "Col 1"),
("Col 2", "Col 2", "Col 2"),
("Col 3", "Col 3", "Col 3")
])
মাল্টি-ইনডেক্স ডেটাফ্রেম গঠন
এখন একটি মাল্টি-ইনডেক্স অ্যারে তৈরি করে ডেটাফ্রেম গঠন করা যাক:
import numpy as np
# মাল্টি-ইনডেক্স অ্যারে (রো ইনডেক্স용)
arr = [
np.array(['car', 'car', 'car', 'bike', 'bike', 'bike', 'truck', 'truck', 'truck']),
np.array(['valueA', 'valueB', 'valueC', 'valueA', 'valueB', 'valueC', 'valueA', 'valueB', 'valueC'])
]
# ডেটাফ্রেম তৈরি
df = pd.DataFrame(np.random.randn(9, 3), index=arr, columns=items)
# রো ইনডেক্সের নাম দেওয়া
df.index.names = ['level 0', 'level 1']
লেভেল ০ (প্রথম লেভেল) ড্রপ করা
কলাম ইনডেক্স থেকে প্রথম লেভেল সরাতে:
df.columns = df.columns.droplevel(0)
সম্পূর্ণ উদাহরণ
import numpy as np
import pandas as pd
# মাল্টি-লেভেল কলাম ইনডেক্স
items = pd.MultiIndex.from_tuples([
("Col 1", "Col 1", "Col 1"),
("Col 2", "Col 2", "Col 2"),
("Col 3", "Col 3", "Col 3")
])
# রো মাল্টি-ইনডেক্স
arr = [
np.array(['car', 'car', 'car', 'bike', 'bike', 'bike', 'truck', 'truck', 'truck']),
np.array(['valueA', 'valueB', 'valueC', 'valueA', 'valueB', 'valueC', 'valueA', 'valueB', 'valueC'])
]
# ডেটাফ্রেম
df = pd.DataFrame(np.random.randn(9, 3), index=arr, columns=items)
df.index.names = ['level 0', 'level 1']
print("মূল ডেটাফ্রেম:")
print(df)
# লেভেল ০ ড্রপ
df.columns = df.columns.droplevel(0)
print("\nআপডেটেড ডেটাফ্রেম (লেভেল ০ সরানো után):")
print(df)
আউটপুট ব্যাখ্যা
প্রাথমিক ডেটাফ্রেমে কলামগুলো তিন লেভেল বিশিষ্ট (Col 1, Col 1, Col 1 ইত্যাদি)। droplevel(0) কল করার পর প্রথম লেভেল সরিয়ে যায়, ফলে কলাম শুধুমাত্র "Col 1", "Col 2", "Col 3" হিসেবে দেখায়। ডেটা অপরিবর্তিত থাকে, শুধু কলাম হায়ারার্কি সরলীকৃত হয়।
নোট: আপনি কোনো লেভেলই ড্রপ করতে পারেন—droplevel(1) দ্বিতীয় লেভেল, droplevel(2) তৃতীয় লেভেল সরাবে। লেভেল নাম দিয়েও ড্রপ করা যায়: droplevel('level_name')।