Pandas DataFrame में कॉलम नाम से उसका इंडेक्स (पोजीशन) प्राप्त करने के लिए columns.get_loc() विधि का उपयोग किया जाता है। यह पूर्णांक इंडेक्स लौटाता है (0-आधारित)।
बुनियादी उपयोग
import pandas as pd
df = pd.DataFrame({
"x": [5, 2, 7, 0],
"y": [4, 7, 5, 1],
"z": [9, 3, 5, 1]
})
print("DataFrame:\n", df)
print("\nकॉलम:", df.columns.tolist())
# कॉलम इंडेक्स प्राप्त करें
col_index_z = df.columns.get_loc('z')
print(f"\n'z' कॉलम का इंडेक्स: {col_index_z}") # 2
col_index_x = df.columns.get_loc('x')
print(f"'x' कॉलम का इंडेक्स: {col_index_x}") # 0
col_index_y = df.columns.get_loc('y')
print(f"'y' कॉलम का इंडेक्स: {col_index_y}") # 1
आउटपुट
DataFrame:
x y z
0 5 4 9
1 2 7 3
2 7 5 5
3 0 1 1
कॉलम: ['x', 'y', 'z']
'z' कॉलम का इंडेक्स: 2
'x' कॉलम का इंडेक्स: 0
'y' कॉलम का इंडेक्स: 1
उन्नत उपयोग
1. एकाधिक कॉलम के इंडेक्स प्राप्त करना
# एकाधिक कॉलम के लिए सूची समझ
cols = ['x', 'z']
indices = [df.columns.get_loc(c) for c in cols]
print(f"कॉलम {cols} के इंडेक्स: {indices}") # [0, 2]
# स्लाइस ऑब्जेक्ट के रूप में
slice_obj = df.columns.get_loc('y'):df.columns.get_loc('z')+1
print(f"स्लाइस: {slice_obj}") # slice(1, 3, None)
2. MultiIndex कॉलम में उपयोग
# MultiIndex कॉलम
arrays = [['A', 'A', 'B', 'B'], ['one', 'two', 'one', 'two']]
df_multi = pd.DataFrame([[1,2,3,4]], columns=arrays)
print("MultiIndex DataFrame:\n", df_multi)
# लेवल 0 पर 'A' की स्थिति
loc = df_multi.columns.get_loc('A')
print(f"\n'A' की स्थिति (लेवल 0): {loc}") # slice(0, 2, None)
# लेवल 1 पर 'one' की स्थिति
loc_one = df_multi.columns.get_loc(('A', 'one'))
print(f"('A', 'one') की स्थिति: {loc_one}") # 0
3. KeyError हैंडलिंग
# मौजूद न होने पर KeyError उठता है
try:
idx = df.columns.get_loc('nonexistent')
except KeyError as e:
print(f"कॉलम नहीं मिला: {e}")
# सुरक्षित तरीका: get() का उपयोग (लेकिन यह इंडेक्स नहीं देता)
# बेहतर: in ऑपरेटर से जांचें
col_name = 'w'
if col_name in df.columns:
print(f"इंडेक्स: {df.columns.get_loc(col_name)}")
else:
print(f"कॉलम '{col_name}' मौजूद नहीं है")
4. इलोक (iloc) के साथ उपयोग
# get_loc() का परिणाम iloc में उपयोग करें
col_idx = df.columns.get_loc('y')
print(f"\niloc से 'y' कॉलम चुनें: df.iloc[:, {col_idx}]")
print(df.iloc[:, col_idx])
# एकाधिक कॉलम
cols_idx = [df.columns.get_loc(c) for c in ['x', 'z']]
print(f"\niloc से एकाधिक कॉलम: df.iloc[:, {cols_idx}]")
print(df.iloc[:, cols_idx])
व्यावहारिक उपयोग मामले
- डायनामिक कॉलम चयन जब कॉलम नाम रनटाइम पर पता हों
- प्रदर्शन-महत्वपूर्ण कोड में
df.iloc[:, idx]df['col']से तेज़ होता है - कॉलम पुनर्व्यवस्थित करने में
- MultiIndex कॉलम नेविगेशन में
संबंधित विधियाँ
| विधि | उद्देश्य |
|---|---|
df.columns.get_loc(key) | कॉलम नाम से इंडेक्स प्राप्त करें |
df.columns.get_indexer(['col1', 'col2']) | एकाधिक कॉलम के इंडेक्स (न मिलने पर -1) |
df.columns.get_indexer_for(['col1']) | सूची के क्रम में इंडेक्स (न मिलने पर एरर) |
df.columns.tolist().index('col') | पायथन सूची विधि (धीमी) |