2025, Oct 01 13:33

Polars में पहली कॉलम हटाने का साफ तरीका: selectors और by_index

Polars DataFrame से पहली कॉलम हटाने का सबसे सुथरा तरीका जानें: selectors, by_index और exclude के सही उपयोग के साथ संक्षिप्त, त्रुटि-मुक्त कोड लिखें।

Polars DataFrame में पहली कॉलम हटाना सुनने में मामूली लगता है, लेकिन सीधा तरीका हमेशा साफ नहीं दिखता। अगर आपने कॉलम नामों की सूची manually तैयार की है या किसी expression के साथ exclude करने की कोशिश की है, तो संभव है कि कोड फालतू लंबा हो गया हो या type error आ गई हो। यहां selectors के साथ इसे करने का एक साफ, प्रचलित तरीका है।

समस्या विवरण

आप Polars DataFrame से पहली कॉलम हटाना चाहते हैं।

एक साधारण तरीका जो चलता तो है, पर भद्दा लगता है

इस तरीके में कॉलम नामों की फ़िल्टर की गई सूची बनाकर उसे select में दिया जाता है। काम हो जाता है, लेकिन यह सुथरा नहीं है:

outcome = table.select([name for pos, name in enumerate(table.columns) if pos != 0])

वह कोशिश जो type error के साथ विफल होती है

expression का इस्तेमाल करके exclude करने पर त्रुटि मिलती है:

sheet.select(pl.exclude(pl.nth(0)))

TypeError: invalid input for `exclude`

Expected one or more `str` or `DataType`; found <Expr ['cs.nth(1, require_all=true)'] at 0x21A964B6350> instead.

ऐसा क्यों होता है

exclude API वास्तविक कॉलम नाम या DataType मानों की अपेक्षा करती है। वहां expression ऑब्जेक्ट देना समर्थित नहीं है—ठीक यही बात त्रुटि संदेश बताता है। इसलिए list comprehension अनावश्यक रूप से लंबी हो जाती है, और expression-आधारित exclude इस उपयोग के लिए मान्य नहीं है।

समाधान: selectors और set नोटेशन

Polars selectors कॉलम्स को उनकी पोज़िशन के आधार पर संबोधित करने और set operations के साथ जोड़ने का संक्षिप्त, अभिव्यंजक तरीका देते हैं। पहली कॉलम हटाने के लिए, चयन करते समय पहले इंडेक्स वाले selector को बस negate करें:

from polars import selectors as sx

grid.select(~sx.by_index(0))

यदि आप इसे set नोटेशन या exclusion सिंटैक्स के साथ देखना चाहें, तो ये रूप भी संभव हैं:

from polars import selectors as sx

grid.select(sx.all() - sx.by_index(1))

grid.select(sx.exclude(sx.by_index(1)))

यह जानना क्यों फायदेमंद है

Selectors कोड को छोटा और पठनीय रखते हैं, नाज़ुक सूची-आधारित जुगाड़ से बचाते हैं, और दस्तावेज़ित, प्रचलित पैटर्न के अनुरूप होते हैं। यह एक झलक में समझना आसान है और कॉलम सूचियाँ manually बनाने की तुलना में कम त्रुटिप्रवण है। जब exclude के लिए invalid input जैसी त्रुटियाँ दिखें, तो समझें कि जहां नाम या प्रकार अपेक्षित हैं, वहां expressions पास करने के बजाय selectors अपनाने चाहिए।

निष्कर्ष

पोज़िशन के आधार पर कॉलम हटाने के लिए selectors का उपयोग करें। पहली कॉलम हटाने का सबसे संक्षिप्त तरीका है:

from polars import selectors as sx

grid.select(~sx.by_index(0))

इस पैटर्न को अपने टूलकिट में रखें और भद्दी सूची-फ़िल्टरिंग या असंगत exclude कॉल्स से दूरी बनाएं।