डेटा-फ़्रेम को सॉर्ट करने के बाद इंडेक्स अपडेट करें


100

निम्नलिखित डेटा-फ़्रेम लें:

x = np.tile(np.arange(3),3)
y = np.repeat(np.arange(3),3)
df = pd.DataFrame({"x": x, "y": y})
   x  y
0  0  0
1  1  0
2  2  0
3  0  1
4  1  1
5  2  1
6  0  2
7  1  2
8  2  2

मुझे इसे xपहले और उसके बाद केवल दूसरा क्रमबद्ध करना होगा y:

df2 = df.sort(["x", "y"])
   x  y
0  0  0
3  0  1
6  0  2
1  1  0
4  1  1
7  1  2
2  2  0
5  2  1
8  2  2

मैं सूचकांक को कैसे बदल सकता हूं कि यह फिर से आरोही है। यानी मुझे यह कैसे मिलेगा:

   x  y
0  0  0
1  0  1
2  0  2
3  1  0
4  1  1
5  1  2
6  2  0
7  2  1
8  2  2

मैंने निम्नलिखित कोशिश की है। दुर्भाग्य से, यह सूचकांक बिल्कुल नहीं बदलता है:

df2.reindex(np.arange(len(df2.index)))

1
यदि आपको नए df की आवश्यकता नहीं है, तो प्रयास करेंdf.sort(["x", "y"], ignore_index=True, inplace=True)
— InnocentBystander

जवाबों:


173

आप 0, 1, 2, ..., n-1 का डिफ़ॉल्ट इंडेक्स प्राप्त करने के लिए इंडेक्स का उपयोग करके रीसेट कर सकते हैं reset_index(और drop=Trueयह इंगित करने के लिए कि आप अपने डेटाफ़्रेम में एक अतिरिक्त कॉलम के रूप में इसे जोड़ने के बजाय मौजूदा इंडेक्स को छोड़ना चाहते हैं) :

In [19]: df2 = df2.reset_index(drop=True)

In [20]: df2
Out[20]:
   x  y
0  0  0
1  0  1
2  0  2
3  1  0
4  1  1
5  1  2
6  2  0
7  2  1
8  2  2

यह सुपर सहायक था। exp_data = exp_data.reindex (['वर्ष'], अक्ष = 'कॉलम') पुराने सूचकांक को रखा। ड्रॉप पुराने सूचकांक को हटा देता है।
— गोल्डन लॉयन


9

चूंकि पांडा 1.0.0 df.sort_valuesमें एक नया पैरामीटर है ignore_indexजो ठीक वही है जो आपको चाहिए:

In [1]: df2 = df.sort_values(by=['x','y'],ignore_index=True)

In [2]: df2
Out[2]:
   x  y
0  0  0
1  0  1
2  0  2
3  1  0
4  1  1
5  1  2
6  2  0
7  2  1
8  2  2

मुझे लगता है कि यह संस्करण 1.0.0 में नया है।
— zyy

5

आप उपयोग करके नए सूचकांक सेट कर सकते हैं set_index:

df2.set_index(np.arange(len(df2.index)))

आउटपुट:

   x  y
0  0  0
1  0  1
2  0  2
3  1  0
4  1  1
5  1  2
6  2  0
7  2  1
8  2  2

8
यह अनावश्यक है, reset_index()इसके बजाय का उपयोग करें
— smci
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.