2012-09-07 20 views
24

मेरे पास डेटाफ्रेम है जिसमें डुप्लिकेट पंक्तियां हैं। मैं एक अद्वितीय अनुक्रमणिका के साथ डेटाफ्रेम प्राप्त करना चाहता हूं और कोई डुप्लीकेट नहीं चाहता हूं। डुप्लिकेट मानों को त्यागना ठीक है। क्या यह संभव है? क्या यह groupby द्वारा किया जाएगा?पांडा: अद्वितीय डेटाफ्रेम

उत्तर

51
In [29]: df.drop_duplicates() 
Out[29]: 
    b c 
1 2 3 
3 4 0 
7 5 9 
+0

यह ध्यान देने योग्य है कि यह पहली या आखिरी घटना लेता है। इसलिए आपको पहले किसी अन्य मात्रा से सॉर्ट करने की आवश्यकता है (यदि आप भाग्यशाली हैं) या फिर भी कुछ जटिल समूहबी तर्क करें। – ely

+2

यह गलत है। drop_duplicates केवल मानों पर कार्य करता है (कम से कम मेरे संस्करण में)। अगर आप इंडेक्स और वैल्यू पर ड्रॉप करना चाहते हैं या सिर्फ इंडेक्स के साथ काम करना चाहते हैं तो आपको रीसेट_इंडेक्स की आवश्यकता है यदि आप एक अद्वितीय इंडेक्स रखना चाहते हैं। शायद अद्वितीय इंडेक्स को लागू करने के लिए समूह के अलावा एक और तरीका है? – mathtick

+1

'df.drop_duplicates (inplace = True)' का प्रयोग करें, यदि आप एक नया चर निर्दिष्ट नहीं करना चाहते हैं। –

10

split-apply-combine दस्तावेज़ीकरण उदाहरण पढ़कर इसे करने का एक तरीका पता चला।

df = pandas.DataFrame({'b':[2,2,4,5], 'c': [3,3,0,9]}, index=[1,1,3,7]) 
df_unique = df.groupby(level=0).first() 

df 
    b c 
1 2 3 
1 2 3 
3 4 0 
7 5 9 

df_unique 
    b c 
1 2 3 
3 4 0 
7 5 9 
+0

यह पंक्ति सूचकांक पर निर्भर करता है पंक्तियों के लिए दोहराया जा रहा है जहां डेटा फ़ील्ड (ख, ग) दोहराया गया है, प्रभावी रूप से वेक्टर के रूप में अपने पंक्ति के सूचकांक बात यह है कि आप अद्वितीय होना चाहता हूँ बनाने (दोहराया नहीं)। – hobs

+3

यदि आपके पास डुप्लीकेट इंडेक्स प्रविष्टियां हैं, तो यह वह जवाब है जिसे आप चाहते हैं। – rogueleaderr

+0

मुझे 'ValueError मिल रहा था: इंडेक्स में डुप्लिकेट प्रविष्टियां होती हैं, मल्टीइंडेक्स पर 'अनस्टैक' करते समय 'रीशेप नहीं कर सकतीं, लेकिन यह समाधान केवल इसके लिए काम करता है' df_unique = df.groupby (level = [0,1])। पहले() ' – dashesy

संबंधित मुद्दे