समस्या विवरण
दिए गए Series से केवल पूर्ण वर्ग (perfect square) संख्याएं निकालें।
इनपुट Series
0 14 1 16 2 30 3 49 4 80 dtype: int64
अपेक्षित आउटपुट
1 16 3 49 dtype: int64
समाधान 1: math.sqrt और lambda filter
import pandas as pd
import math as m
l = [14,16,30,49,80]
data = pd.Series(l)
# पूर्ण वर्ग जांच: sqrt का पूर्णांक वर्ग मूल संख्या के बराबर हो
result = pd.Series(filter(lambda x: x == int(m.sqrt(x) + 0.5)**2, l))
print("पूर्ण वर्ग संख्याएं:")
print(data[data.isin(result)])
समाधान 2: लूप और isin()
import pandas as pd
import math as m
l = [4,16,30,49,80]
data = pd.Series(l)
print("दिया गया Series:")
print(data)
lis = []
for i in range(len(data)):
for j in data:
if data[i] == int(m.sqrt(j) + 0.5)**2:
lis.append(data[i])
print("Series में पूर्ण वर्ग:")
print(data[data.isin(lis)])
आउटपुट
दिया गया Series: 0 4 1 16 2 30 3 49 4 80 dtype: int64 Series में पूर्ण वर्ग: 0 4 1 16 3 49 dtype: int64
बेहतर तरीका: वेक्टराइज़्ड
import numpy as np mask = np.sqrt(data) == np.sqrt(data).astype(int) print(data[mask])