সমস্যা বিবরণ
একটি সিরিজ দেওয়া আছে যাতে কিছু সংখ্যা অনুপস্থিত (missing) আছে (যেমন ১,২,৩,৬,৭ — এখানে ৪ ও ৫ নেই)। লক্ষ্য হলো সিরিজের প্রথম ও শেষ 엘িমেন্টের মধ্যে থাকা সব পূর্ণসংখ্যা উপস্থিত থাকা একটি নতুন সিরিজ তৈরি করা।
ইনপুট সিরিজ
0 1
1 2
2 3
3 6
4 7
সমাধানের পদ্ধতি
- সিরিজ তৈরি করুন।
- রেঞ্জ নির্ধারণ করুন প্রথম এলিমেন্ট (
data[0]) থেকে শেষ এলিমেন্ট (data[len(data)-1]) পর্যন্ত। - লুপ চালান এই রেঞ্জের সব সংখ্যার জন্য।
- উপস্থিতি যাচাই করুন যদি সংখ্যাটি সিরিজে থাকে তবে যোগ করুন, না থাকলে ও যোগ করুন (এভাবে মিসিং সংখ্যাগুলো যোগ হয়ে যায়)।
- সর্ট করুন এবং নতুন সিরিজ তৈরি করুন।
পূর্ণ কোড উদাহরণ
import pandas as pd
import numpy as np
l = [1,2,3,6,7]
l1 = []
data = pd.Series(l)
length = len(data)
for i in range(data[0], data[length-1] + 1): # +1 দিয়ে শেষ মান অন্তর্ভুক্ত
if i not in data:
l1.append(i)
else:
l1.append(i)
l1.sort()
data = pd.Series(l1)
print("পূর্ণ সিরিজ (মিসিং মানসহ):")
print(data)
আউটপুট
পূর্ণ সিরিজ (মিসিং মানসহ):
0 1
1 2
2 3
3 4
4 5
5 6
6 7
dtype: int64
বিকল্প পদ্ধতি (প্যান্ডাস রিইন্ডেক্স ব্যবহার করে)
আধুনিক প্যান্ডাসে আরও সহজে করা যায়:
import pandas as pd
data = pd.Series([1,2,3,6,7])
full_index = pd.RangeIndex(data.min(), data.max() + 1)
data = data.reindex(full_index).sort_index().reset_index(drop=True)
print(data)
নোট: মূল কোডে range(data[0], data[length-1]) লিখা থাকলে শেষ মান বাদ যায়, তাই +1 যোগ করা উচিত।