डेटाफ़्रेम में कई सूचियाँ लें


164

मैं एक अजगर डेटाफ़्रेम में कई सूचियों को कैसे ले सकता हूँ और उन्हें विभिन्न स्तंभों के रूप में रख सकता हूँ? मैंने इस समाधान की कोशिश की, लेकिन कुछ परेशानी थी।

प्रयास 1:

  • तीन सूचियां हैं, और उन्हें एक साथ ज़िप करें और उसका उपयोग करें res = zip(lst1,lst2,lst3)
  • पैदावार सिर्फ एक कॉलम

प्रयास 2:

percentile_list = pd.DataFrame({'lst1Tite' : [lst1],
                                'lst2Tite' : [lst2],
                                'lst3Tite' : [lst3] }, 
                                columns=['lst1Tite','lst1Tite', 'lst1Tite'])
  • पैदावार या तो एक पंक्ति में 3 कॉलम (ऊपर का रास्ता) या यदि मैं स्थानांतरित करता हूं तो यह 3 पंक्तियां और 1 स्तंभ है

3 कॉलम (तीन सूचियों) पांडा डेटाफ़्रेम द्वारा मुझे 100 पंक्ति (प्रत्येक स्वतंत्र सूची की लंबाई) कैसे मिलती है?

जवाबों:


279

मुझे लगता है कि आप लगभग वहाँ हैं, अतिरिक्त वर्ग कोष्ठक को हटाने की कोशिश कर रहे हैं lst(इसके अलावा आपको कॉलम नामों को निर्दिष्ट करने की आवश्यकता नहीं है जब आप इस तरह से एक तानाशाही से डेटाफ़्रेम बना रहे हैं):

import pandas as pd
lst1 = range(100)
lst2 = range(100)
lst3 = range(100)
percentile_list = pd.DataFrame(
    {'lst1Title': lst1,
     'lst2Title': lst2,
     'lst3Title': lst3
    })

percentile_list
    lst1Title  lst2Title  lst3Title
0          0         0         0
1          1         1         1
2          2         2         2
3          3         3         3
4          4         4         4
5          5         5         5
6          6         6         6
...

यदि आपको अपने पहले प्रयास के np.column_stackबजाए एक अधिक निष्पादन योग्य समाधान की आवश्यकता है zip, तो इसका उदाहरण यहाँ पर लगभग 2x स्पीडअप है, हालांकि मेरी राय में पठनीयता की लागत पर थोड़ा सा आता है:

import numpy as np
percentile_list = pd.DataFrame(np.column_stack([lst1, lst2, lst3]), 
                               columns=['lst1Title', 'lst2Title', 'lst3Title'])

क्या np.column_stack एक दृश्य है, या यह डेटा की प्रतिलिपि बनाता है। (यदि प्रतिलिपि हो, तो ऐसा लगता है कि यह अधिक कुशल हो सकता है (O (1), O (n)) नहीं।
user48956

@ maxymoo कॉलम नाम स्वचालित रूप से सूची के नाम पर सेट किया जा सकता है?
जेओ ५

1
सुन्न स्तम्भ स्टैक अच्छी तरह से काम नहीं करता है अगर सूची अलग-अलग
डेटाटिप्स की है

54

आदित्य गुरु के उत्तर को यहां जोड़ना । मानचित्र का उपयोग करने की कोई आवश्यकता नहीं है। आप इसे बस द्वारा कर सकते हैं:

pd.DataFrame(list(zip(lst1, lst2, lst3)))

यह कॉलम के नाम को 0,1,2 के रूप में सेट करेगा। अपने स्वयं के स्तंभ नाम सेट करने के लिए, आप columnsऊपर दिए गए विधि में कीवर्ड तर्क पास कर सकते हैं ।

pd.DataFrame(list(zip(lst1, lst2, lst3)),
              columns=['lst1_title','lst2_title', 'lst3_title'])

3
पायथन 3.8, और पंडास 1.0 में, हमें सूची फ़ंक्शन का उपयोग करने की आवश्यकता नहीं है, क्योंकि DataFrame एक पुनरावृत्त होने की उम्मीद करता है, और ज़िप () एक पुनरावृत्त वस्तु देता है। तो, pd.DataFrame(zip(lst1, lst2, lst3))भी करना चाहिए।
सरफराज अहमद

10

बस जोड़ने कि पहली दृष्टिकोण का उपयोग कर के रूप में यह किया जा सकता है -

pd.DataFrame(list(map(list, zip(lst1,lst2,lst3))))

8

एक और स्केलेबल समाधान जोड़ना।

lists = [lst1, lst2, lst3, lst4]
df = pd.concat([pd.Series(x) for x in lists], axis=1)

क्या आप इसे थोड़ा समझा सकते हैं?
ज़कस

1
आप सूचियों की सूची से DataFrame बनाने के लिए (concat) श्रृंखला को लंबवत (अक्ष = 1) जोड़ते हैं
yona bendelac

5

उपरोक्त उत्तरों में जोड़कर, हम मक्खी पर बना सकते हैं

df= pd.DataFrame()
list1 = list(range(10))
list2 = list(range(10,20))
df['list1'] = list1
df['list2'] = list2
print(df)

आशा करता हूँ की ये काम करेगा !


1

@oopsi का उपयोग किया गया pd.concat()था लेकिन इसमें कॉलम के नाम शामिल नहीं थे। आप निम्न कर सकते हैं, जो स्वीकृत उत्तर में पहले समाधान के विपरीत, आपको स्तंभ क्रम पर नियंत्रण देता है (dicts से बचा जाता है, जो अनियंत्रित हैं):

import pandas as pd
lst1 = range(100)
lst2 = range(100)
lst3 = range(100)

s1=pd.Series(lst1,name='lst1Title')
s2=pd.Series(lst2,name='lst2Title')
s3=pd.Series(lst3 ,name='lst3Title')
percentile_list = pd.concat([s1,s2,s3], axis=1)

percentile_list
Out[2]: 
    lst1Title  lst2Title  lst3Title
0           0          0          0
1           1          1          1
2           2          2          2
3           3          3          3
4           4          4          4
5           5          5          5
6           6          6          6
7           7          7          7
8           8          8          8
...

1

कई सूचियों से डेटाफ्रेम बनाने के कई तरीके हैं।

list1=[1,2,3,4]
list2=[5,6,7,8]
list3=[9,10,11,12]
  1. pd.DataFrame({'list1':list1, 'list2':list2, 'list3'=list3})

  2. pd.DataFrame(data=zip(list1,list2,list3),columns=['list1','list2','list3'])


0

आप इस निम्नलिखित कोड का उपयोग कर सकते हैं

train_data['labels']= train_data[["LABEL1","LABEL1","LABEL2","LABEL3","LABEL4","LABEL5","LABEL6","LABEL7"]].values.tolist()
train_df = pd.DataFrame(train_data, columns=['text','labels'])
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.