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


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.