मैं आवृत्ति कैसे पा सकता हूं?

Oct 08 2020

मेरे पास यह डेटा फ़्रेम है। मैं कॉलम बी में 3 सबसे दोहराया संख्या कैसे पा सकता हूं?

import pandas as pd
import numpy as np
df = pd.DataFrame({"a": [1,2,2,4,2,3], "b": [np.nan, np.nan, '2,3', 3, '3,5,1',2]})

मुझे लगता है कि उत्तर 3,2,5 या 3,2,1 होना चाहिए

जवाब

ShubhamSharma Oct 09 2020 at 02:07

splitbसीमांकक के चारों ओर स्थित स्तंभ ,, फिर explodeप्रत्येक तत्व को पंक्तियों की तरह सूची में बदलने के लिए उपयोग करते हैं, अंत में शीर्ष 3 दोहराया तत्वों को प्राप्त करने के लिए value_counts+ headका उपयोग करते हैं:

df['b'].dropna().astype(str).str.split(',')\
       .explode().value_counts().head(3).index.tolist()

explodeपांडा संस्करण में उपलब्ध है = = 0.25, पांडा संस्करण के लिए < 0.25उपयोग:

pd.value_counts(np.hstack(df['b'].dropna().astype(str).str.split(','))).head(3).index.tolist()

['3', '2', '5']
1 AndyL. Oct 09 2020 at 02:39

पांडा और अजगर के संयोजन का उपयोग करें collections.Counter

from collections import Counter

a = list(dict(Counter(df.b.dropna().astype(str).str.split(',').sum()).most_common(3))
                                   .keys())

In [132]: a
Out[132]: ['3', '2', '5']