ডেটাফ্রেমে একাধিক তালিকা নিন


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'])

এনপি.কমলন_এ কোনও দর্শন দেখুন বা এটি ডেটা অনুলিপি করে। (যদি অনুলিপি করা হয় তবে মনে হয় এটি আরও কার্যকর (O (1), ও (এন) নয়) হতে পারে
ব্যবহারকারীর 48956

@ ম্যাক্সিমো কলামের নামগুলি স্বয়ংক্রিয়ভাবে তালিকার নামের সাথে সেট করা যেতে পারে?
jo5

1
তালিকাগুলি যদি বিভিন্ন ডেটাটাইপের হয় তবে নামী কলাম স্ট্যাকটি ভাল কাজ করে না
ব্যবহারকারীর 6386155

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
পাইথন ৩.৮, এবং পান্ডাস ০.০ এ আমাদের তালিকা ফাংশন ব্যবহার করার দরকার নেই, যেহেতু ডেটাফ্রেম একটি পুনরাবৃত্তিযোগ্য প্রত্যাশা করে, এবং জিপ () একটি পুনরাবৃত্তিযোগ্য বস্তুর প্রত্যাশা করে। সুতরাং, 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
তালিকার তালিকা থেকে ডেটা ফ্রেম তৈরি করতে আপনি (কনট্যাট) সিরিজে উল্লম্বভাবে (অক্ষ = 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

@ ওওপসি ব্যবহার করেছেন pd.concat()তবে কলামের নাম অন্তর্ভুক্ত করেননি। আপনি নিম্নলিখিতটি করতে পারেন, যা গৃহীত উত্তরের প্রথম সমাধানের মতো নয়, আপনাকে কলামের অর্ডারে নিয়ন্ত্রণ দেয় (ডিক্টগুলি এড়ান, যা সীমান্তবিহীন):

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'])
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.