Pandas DataFrame में filter() विधि का उपयोग करके कॉलम नाम पैटर्न के आधार पर सबसेट बनाया जा सकता है। यह रेगुलर एक्सप्रेशन, प्रीफिक्स, सफिक्स आदि से कॉलम चुनने में उपयोगी है।
मुख्य पैरामीटर्स
| पैरामीटर | विवरण |
|---|---|
like | सबस्ट्रिंग मैच (कहीं भी) |
regex | रेगुलर एक्सप्रेशन पैटर्न |
items | सटीक कॉलम नामों की सूची |
axis | 0=पंक्तियाँ, 1=कॉलम (डिफ़ॉल्ट) |
उदाहरण
import pandas as pd
dataFrame = pd.DataFrame({
"Product": ["SmartTV", "ChromeCast", "Speaker", "Earphone"],
"Opening_Stock": [300, 700, 1200, 1500],
"Closing_Stock": [200, 500, 1000, 900],
"Opening_Price": [1000, 2000, 500, 800],
"Closing_Price": [1200, 2500, 600, 1000]
})
print("मूल DataFrame:\n", dataFrame)
print("\nकॉलम नाम:", list(dataFrame.columns))
# 1. इंडेक्सिंग ऑपरेटर से सिंगल कॉलम
print("\nकेवल Product कॉलम:")
print(dataFrame[['Product']])
# 2. इंडेक्सिंग ऑपरेटर से एकाधिक कॉलम
print("\nOpening_Stock और Closing_Stock:")
print(dataFrame[['Opening_Stock', 'Closing_Stock']])
# 3. filter(like='Open') - 'Open' वाले कॉलम
print("\n'Open' वाले कॉलम (like):")
print(dataFrame.filter(like='Open'))
# 4. filter(like='Stock') - 'Stock' वाले कॉलम
print("\n'Stock' वाले कॉलम:")
print(dataFrame.filter(like='Stock'))
# 5. filter(regex='^Opening') - 'Opening' से शुरू होने वाले
print("\n'Opening' से शुरू होने वाले (regex):")
print(dataFrame.filter(regex='^Opening'))
# 6. filter(regex='_Stock$') - '_Stock' से खत्म होने वाले
print("\n'_Stock' से खत्म होने वाले (regex):")
print(dataFrame.filter(regex='_Stock$'))
# 7. filter(items=[]) - सटीक नाम
print("\nनिर्दिष्ट कॉलम (items):")
print(dataFrame.filter(items=['Product', 'Opening_Stock']))
आउटपुट
मूल DataFrame:
Closing_Price Closing_Stock Opening_Price Opening_Stock Product
0 1200 200 1000 300 SmartTV
1 2500 500 2000 700 ChromeCast
2 600 1000 500 1200 Speaker
3 1000 900 800 1500 Earphone
कॉलम नाम: ['Closing_Price', 'Closing_Stock', 'Opening_Price', 'Opening_Stock', 'Product']
'Open' वाले कॉलम (like):
Opening_Price Opening_Stock
0 1000 300
1 2000 700
2 500 1200
3 800 1500
'Stock' वाले कॉलम:
Closing_Stock Opening_Stock
0 200 300
1 500 700
2 1000 1200
3 900 1500
'Opening' से शुरू होने वाले (regex):
Opening_Price Opening_Stock
0 1000 300
1 2000 700
2 500 1200
3 800 1500
पंक्तियों को फ़िल्टर करना (axis=0)
# इंडेक्स लेबल के आधार पर पंक्तियाँ फ़िल्टर करें
df_indexed = dataFrame.set_index('Product')
print("\nProduct को इंडेक्स बनाकर:")
print(df_indexed.filter(like='Smart', axis=0)) # 'Smart' से शुरू होने वाले इंडेक्स
print(df_indexed.filter(regex='^E', axis=0)) # 'E' से शुरू होने वाले इंडेक्स
filter() vs इंडेक्सिंग ऑपरेटर []
df[['col1', 'col2']]: सटीक नाम पता होने पर तेज़ और सीधाdf.filter(like='pattern'): पैटर्न मैचिंग के लिए, डायनामिक कॉलम चयनdf.filter(regex='pattern'): जटिल पैटर्न के लिएfilter()कॉलम न मिलने पर एरर नहीं देता (खाली DataFrame लौटाता है)
उन्नत रेगुलर एक्सप्रेशन उदाहरण
# संख्या वाले कॉलम
df.filter(regex=r'\d')
# विशिष्ट पैटर्न: Opening_ या Closing_ से शुरू
df.filter(regex='^(Opening|Closing)_')
# केस-इनसेंसिटिव मैच
df.filter(regex='(?i)stock') # stock, Stock, STOCK सभी मैच