मेरे पास इस तरह एक डेटाफ्रेम है -

    TEST_NUM  SITE_NUM  RESULT TEST_FLG              TEST_TXT UNITS LO_LIMIT HI_LIMIT
0       150         0 -0.4373        P  Continuity_PPMU XSCI     V       -1     -0.3
1       150         1 -0.4383        P  Continuity_PPMU XSCI     V       -1     -0.3
2       150         2 -0.4357        P  Continuity_PPMU XSCI     V       -1     -0.3
3       150         3 -0.4370        P  Continuity_PPMU XSCI     V       -1     -0.3
4       151         0 -0.4646        P  Continuity_PPMU XSCO     V       -1     -0.3

जैसा कि आप देख सकते हैं कि TEST_TXT में बार-बार मान हैं। TEST_TXT में लगभग 53 अद्वितीय मान हैं।

प्रश्न> मैं क्रम को समान रखते हुए TEST_TXT श्रृंखला में सभी अद्वितीय मान प्राप्त करना चाहता हूं, जैसे ['Continuity_PPMU XSCI','Continuity_PPMU XSCO',..etc]

वर्तमान में, जब मैं np.unique() का उपयोग कर रहा हूं तो यह क्रम बदल रहा है, हालांकि यह अद्वितीय मूल्य देता है।

मैं डेटाफ़्रेम को पुनरावृत्त कर सकता हूं, यह जांचने के लिए एक नक्शा रख सकता हूं कि क्या यह एक मूल्य पहले से ही प्रकट हुआ है या नहीं, यदि नहीं, तो मैं एक सूची में जोड़ सकता हूं। इस तरह मेरे पास एक ही क्रम में अद्वितीय मूल्य भी हो सकते हैं लेकिन मैं एक और अधिक सुरुचिपूर्ण तरीका, अधिक पायथन तरीका (या पांडा/सुन्न) की तलाश में था।

धन्यवाद!

0
Kartik Mehra 30 अक्टूबर 2020, 15:16

2 जवाब

सबसे बढ़िया उत्तर

बस numpy.unique() से pandas.Series.unique() चाल चलेगा . NumPy को छँटाई का उपयोग करके अद्वितीय मान मिलते हैं जबकि पंडों एक हैश तालिका का उपयोग करते हैं और विशेष रूप से दस्तावेज़ीकरण में कहते हैं कि परिणाम मूल रूप से दिखाई देने वाले क्रम में हैं।

तो इस तरह:

df.TEST_TXT.unique()
1
John Zwinck 30 अक्टूबर 2020, 15:21

आप drop_duplicates को सीधे अपनी श्रंखला में उपयोग कर सकते हैं:

df['TEST_TXT'].drop_duplicates()

आप जो चाहते हैं वह आपको देंगे, आदेश रखते हुए

1
IoaTzimas 30 अक्टूबर 2020, 15:22