मैं 1 सूची और 1 शब्दकोश का उपयोग करके डेटाफ्रेम बनाने की कोशिश कर रहा हूं।

पहला कॉलम शब्द (सूची के बराबर) है, दूसरा गिनती (कुछ शब्द संवाददाता गिनती के साथ शब्दकोश में हैं)।

उदाहरण:

list = ['hi', 'hello', 'bye']
dict = {'hi': 10}

df = hi    10
     hello 0
     bye   0

मैं जो करना चाहता हूं वह एक सूची COMP का उपयोग करके करना है, जैसे कुछ:

df = pd.DataFrame([[word, count] for word in list if word in dict.keys(): count = dict[word] else: count = 0 ], columns=['words', 'count'])
0
notyourdaddybro 17 मार्च 2021, 19:27

2 जवाब

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

आप dict.get विधि का उपयोग करके अजगर लिखते समय थोड़ा अधिक अभिव्यंजक हो सकते हैं, जिसका उपयोग डिफ़ॉल्ट मान सेट करने के लिए किया जा सकता है यदि कुंजी मौजूद नहीं है।

pd.DataFrame([[word, dct.get(word, 0)] for word in lst], columns=['words', 'count'])

मैंने आरक्षित कीवर्ड का उपयोग करने से बचने के लिए dict और list को dct और lst से बदल दिया है।

0
Ankush 17 मार्च 2021, 19:34

ऐसा लगता है कि आप वास्तव में पंडों Series ऑब्जेक्ट के पीछे हैं। यहां बताया गया है कि आप किसी ऐसे शब्दकोश से कैसे बना सकते हैं जो आपकी समस्या का समाधान करता हो:

>>> lst = ['hi', 'hello', 'bye']
>>> dct = {'hi': 10}

>>> pd.Series({k: dct.get(k, 0) for k in lst})
hi       10
hello     0
bye       0
dtype: int64

या, यदि आप डेटाफ़्रेम चाहते हैं:

>>> pd.DataFrame([(k, dct.get(k, 0)) for k in lst], columns=['word', 'count'])
    word  count
0     hi     10
1  hello      0
2    bye      0
0
Tgsmith61591 17 मार्च 2021, 19:36