खोज…


डुप्लिकेट का चयन करें

अगर जरूरत निर्धारित मूल्य 0 स्तंभ के लिए B , जहां कॉलम में A डेटा पहले से मुखौटा बनाने दोहराया गया है Series.duplicated और उसके बाद का उपयोग DataFrame.ix या Series.mask :

In [224]: df = pd.DataFrame({'A':[1,2,3,3,2],
     ...:                    'B':[1,7,3,0,8]})

In [225]: mask = df.A.duplicated(keep=False)

In [226]: mask
Out[226]: 
0    False
1     True
2     True
3     True
4     True
Name: A, dtype: bool

In [227]: df.ix[mask, 'B'] = 0

In [228]: df['C'] = df.A.mask(mask, 0)

In [229]: df
Out[229]: 
   A  B  C
0  1  1  1
1  2  0  0
2  3  0  0
3  3  0  0
4  2  0  0

अगर जरूरत की विपरीत मुखौटा उपयोग ~ :

In [230]: df['C'] = df.A.mask(~mask, 0)

In [231]: df
Out[231]: 
   A  B  C
0  1  1  0
1  2  0  2
2  3  0  3
3  3  0  3
4  2  0  2

ड्रॉप डुप्लिकेट

drop_duplicates उपयोग करें:

In [216]: df = pd.DataFrame({'A':[1,2,3,3,2],
     ...:                    'B':[1,7,3,0,8]})

In [217]: df
Out[217]: 
   A  B
0  1  1
1  2  7
2  3  3
3  3  0
4  2  8

# keep only the last value
In [218]: df.drop_duplicates(subset=['A'], keep='last')
Out[218]: 
   A  B
0  1  1
3  3  0
4  2  8

# keep only the first value, default value
In [219]: df.drop_duplicates(subset=['A'], keep='first')
Out[219]: 
   A  B
0  1  1
1  2  7
2  3  3

# drop all duplicated values
In [220]: df.drop_duplicates(subset=['A'], keep=False)
Out[220]: 
   A  B
0  1  1

जब आप डेटा फ़्रेम की एक प्रति प्राप्त नहीं करना चाहते, लेकिन मौजूदा को संशोधित करने के लिए:

In [221]: df = pd.DataFrame({'A':[1,2,3,3,2],
     ...:                    'B':[1,7,3,0,8]})

In [222]: df.drop_duplicates(subset=['A'], inplace=True)

In [223]: df
Out[223]: 
   A  B
0  1  1
1  2  7
2  3  3

अद्वितीय तत्वों को गिनना और प्राप्त करना

एक श्रृंखला में अद्वितीय तत्वों की संख्या:

In [1]: id_numbers = pd.Series([111, 112, 112, 114, 115, 118, 114, 118, 112])
In [2]: id_numbers.nunique()
Out[2]: 5

एक श्रृंखला में अद्वितीय तत्व प्राप्त करें:

In [3]: id_numbers.unique()
Out[3]: array([111, 112, 114, 115, 118], dtype=int64)

In [4]: df = pd.DataFrame({'Group': list('ABAABABAAB'), 
                           'ID': [1, 1, 2, 3, 3, 2, 1, 2, 1, 3]})

In [5]: df
Out[5]: 
  Group  ID
0     A   1
1     B   1
2     A   2
3     A   3
4     B   3
5     A   2
6     B   1
7     A   2
8     A   1
9     B   3

प्रत्येक समूह में अद्वितीय तत्वों की संख्या:

In [6]: df.groupby('Group')['ID'].nunique()
Out[6]: 
Group
A    3
B    2
Name: ID, dtype: int64

प्रत्येक समूह में अद्वितीय तत्व मिलते हैं:

In [7]: df.groupby('Group')['ID'].unique()
Out[7]: 
Group
A    [1, 2, 3]
B       [1, 3]
Name: ID, dtype: object

एक कॉलम से अद्वितीय मान प्राप्त करें।

In [15]: df = pd.DataFrame({"A":[1,1,2,3,1,1],"B":[5,4,3,4,6,7]})

In [21]: df
Out[21]: 
   A  B
0  1  5
1  1  4
2  2  3
3  3  4
4  1  6
5  1  7

स्तंभ A और B में अनन्य मान प्राप्त करने के लिए

In [22]: df["A"].unique()
Out[22]: array([1, 2, 3])

In [23]: df["B"].unique()
Out[23]: array([5, 4, 3, 6, 7])

एक सूची के रूप में कॉलम ए में अद्वितीय मान प्राप्त करने के लिए (ध्यान दें कि unique() का उपयोग दो अलग-अलग तरीकों से किया जा सकता है)

In [24]: pd.unique(df['A']).tolist()
Out[24]: [1, 2, 3]

यहाँ एक और अधिक जटिल उदाहरण है। कहें कि हम स्तंभ 'बी' से अद्वितीय मूल्यों को खोजना चाहते हैं जहां 'ए' 1 के बराबर है।

सबसे पहले, एक डुप्लिकेट पेश करें ताकि आप देख सकें कि यह कैसे काम करता है। आइए 6 को पंक्ति '4' में बदलें, कॉलम 'बी' को 4 के साथ:

In [24]: df.loc['4', 'B'] = 4    
Out[24]:    
   A  B
0  1  5
1  1  4
2  2  3
3  3  4
4  1  4
5  1  7

अब डेटा का चयन करें:

In [25]: pd.unique(df[df['A'] == 1 ]['B']).tolist()
Out[25]: [5, 4, 7]

यह पहले DataFrame की सोच से टूट सकता है:

df['A'] == 1 

यह कॉलम ए में मान पाता है जो 1 के बराबर हैं, और उन पर सही या गलत लागू होता है। इसके बाद हम DataFrame (बाहरी DataFrame चयन) के कॉलम 'B' से मानों का चयन करने के लिए इसका उपयोग कर सकते हैं

तुलना के लिए, यहां सूची दी गई है यदि हम अद्वितीय का उपयोग नहीं करते हैं। यह कॉलम 'B' में प्रत्येक मान को पुनः प्राप्त करता है जहां कॉलम 'A' 1 है

In [26]: df[df['A'] == 1]['B'].tolist()
Out[26]: [5, 4, 4, 7]


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow